精华内容
下载资源
问答
  • linux下相同目录的文件相互引用 ··· pachage a   | ----- b.py   | ----- c.py ··· 在 b.py 中调用 c.py里的xxx函数 #linux下 from c inport xxx #windows下 from a.c import xxx ...

    linux下相同目录的文件相互引用

    ···
    pachage a
      | ----- b.py
      | ----- c.py
    ···

    b.py 中调用 c.py里的xxx函数

    #linux下
    from c inport xxx
    
    #windows下
    from a.c import xxx
    
    展开全文
  • python调用别的文件夹下的py文件

    千次阅读 2018-10-29 15:19:44
    文件(DataProvider.py)需要运用DataOuter.py中的函数,在同一个COMProj大文件夹下,分别在DataOuter和DataProvider下 ? 1 2 3 4 5 import sys from sys import...

    1. 方法一

    环境,Python为2.7,pycharm工作区间。主文件(DataProvider.py)需要运用DataOuter.py中的函数,在同一个COMProj大文件夹下,分别在DataOuter和DataProvider下

    ?

    1

    2

    3

    4

    5

     

    import sys

    from sys import path

    path.append(0, sys.path[0]+'\\DataOuter') #这里DataOuter是DataOuter.py所在文件夹

    from .DataOuter.DataOuter import *

    文件夹目录视图:

     

    在此处有一个文件   application/app/folder/file.py

    想在 application/app2/some_folder/some_file.py  中应用file.py

    2.方法二

    ?

    1

    2

    3

    import sys

    sys.path.insert(0, '/path/to/application/app/folder')

    import file

    3.方法三

    ?

    1

    from application.app.folder.file import func_name

    但是这个方法必须保证folder文件夹(也就是需要的文件夹下)包含__init__.py,若是没有,可以新建一个

    4.方法四

    此法适用于 python3 on linux

    1

    2

    3

    import sys

    sys.path.append(pathToFolderContainingScripts)

    from scriptName import functionName #scriptName without .py extension

    5.方法五

    当文件在平行路径下时,如

    application/app2/some_folder/some_file.py
    application/app2/another_folder/another_file.py

     

    1

    2

    import sys

    sys.path.append('../')

    from some_folder.some_file import *

    因为本来的代码就是from some_folder.some_file import * 这种引用的,所以就习惯的直接在前面加了方法五的两行代码,好用了

    如果还有其他方法,欢迎补充

     

    参考:https://www.jb51.net/article/141643.htm

    最后求关注,求点赞,欢迎大家关注我的公众号
    在这里插入图片描述
    记录所学所用,包括但不限于遥感、地信、气象、生态环境,机器学习知识,相关文献阅读,编程代码实现。偶尔荒腔走板的聊聊其他。欢迎不同领域的朋友们加入进来,多多交流。

    展开全文
  • 特别是当一个py文件调用另一个py文件中定义好的函数或类时,需要根据调用和被调用文件所在目录的不同而采取不同方式。 同时在使用pyinstaller打包为exe时,也要注意参数的使用,此处有坑,搞了一天才弄好,哎 函数...

    在开发稍大规模python程序时,就不能将所有*.py源文件放到一个文件夹里管理了。
    特别是当一个py文件调用另一个py文件中定义好的函数或类时,需要根据调用和被调用文件所在目录的不同而采取不同方式。
    同时在使用pyinstaller打包为exe时,也要注意参数的使用,此处有坑,搞了一天才弄好,哎

    函数print_name和类custom_class在source.py中定义:

    '''
    自定义定义函数和类
    '''
    def print_name(name):
        print('welcome '+ name)
    
    class custom_class():
        def __init__(self, name):
            self.name = name
    
        def show_name(self):
            print('hello '+ self.name)
            
    

    在ui.py中使用上面的的函数和类,可以分为三种典型情况:

    1. source.py 和 ui.py 在同一个文件夹内
    2. source.py 在ui.py所在目录的下级子目录中
    3. source.py 在ui.py分别在两个平级文件夹内

    Case1:source.py 和 ui.py 在同一个文件夹内

    这种情况最简单,也是学习python过程中最常用的目录结构,文件结构如下,项目名称为PROJECT1,新建同名PROJECT1文件夹

    • PROJECT1
      • source.py
      • ui.py

    这种情况可以直接import source,ui.py完整代码如下:

    '''
    ui.py和source.py文件在同一文件夹
    '''
    import source
    
    # 函数引用
    source.print_name("Lily")
    
    # 类的引用
    OBJ = source.custom_class('Mike')
    OBJ.show_name()
    
    

    在路径 PROJECT1 下打开控制台,运行结果为:

    \PROJECT1> python .\ui.py
    welcome Lily
    hello Mike
    

    在路径 PROJECT1 下打开控制台,运行pyinstaller命令打包:

    ...\PROJECT1> pyinstaller ui.py
    143 INFO: PyInstaller: 3.5
    143 INFO: Python: 3.7.0
    144 INFO: Platform: Windows-10-10.0.18362-SP0
    (省略打包过程中输出的信息)
    2757 INFO: Building COLLECT COLLECT-00.toc
    3021 INFO: Building COLLECT COLLECT-00.toc completed successfully.
    

    运行后完成打包,默认在\PROJECT1\dist\ui 路径下可以找到 ui.exe 文件,运行该文件的结果为:

    \PROJECT1\dist\ui> ./ui
    welcome Lily
    hello Mike
    

    实现预期目的

    Case2:source.py 在ui.py所在目录的下级子目录中

    这种情况也很常见,项目名称为PROJECT2,新建同名PROJECT2文件夹,而source.py 在CODE子目录下

    • PROJECT2
      • ui.py
      • CODE
        • source.py

    不修改ui.py,直接运行会报错,找不到 module ‘source’

    \PROJECT2> python .\ui.py                                         Traceback (most recent call last):
      File ".\ui.py", line 5, in <module>
        import source
    ModuleNotFoundError: No module named 'source'
    

    这种情况需要添加路径,修改后的ui.py代码如下:

    '''
    source.py文件在CODE文件夹内
    '''
    import sys
    sys.path.append('./CODE')
    
    import source
    
    # 函数引用
    source.print_name("Lily")
    
    # 类的引用
    OBJ = source.custom_class('Mike')
    OBJ.show_name()
    
    

    程序正常运行

    \PROJECT2> python .\ui.py
    welcome Lily
    hello Mike
    

    添加相对路径

    此处有坑:我平时用vscode开发,“打开文件夹”打开的是 “PROJECT2” 文件夹,即控制台定位在 PROJECT2的路径下,添加路径命令sys.path.append(’./CODE’) 中的路径也要以“PROJECT2” 为基准,而不用考虑 ui.py 和 source.py文件的相对关系。
    如退到“PROJECT2” 的上级路径TEST中运行,则仍然会报错:

    \TEST> python .\PROJECT2\ui.py                                         Traceback (most recent call last):
      File ".\PROJECT2\ui.py", line 7, in <module>
        import source
    ModuleNotFoundError: No module named 'source'
    

    pylint 提示:Unable to import 'source’pylint(import-error)

    因为自学的python,想规范自己的代码,所以安装了pylint用于检查代码,发现在第7行pylint会报错,内容:Unable to import 'source’pylint(import-error)
    在这里插入图片描述可以更改pylint的配置文件关闭这个检查,我是参考:
    https://blog.csdn.net/zj010206/article/details/92806700
    中的写法做的。

    简单总结,找到“pylint.exe”所在路径,我的在“C:\Users\xxx\AppData\Roaming\Python\Python37\Scripts”,打开控制台,运行 pylint --generate-rcfile > .pylintrc,就可以生成.pylintrc文件,之后按链接中方法修改.pylintrc文件

    PS C:\Users\xxx\AppData\Roaming\Python\Python37\Scripts> pylint --generate-rcfile > .pylintrc
    

    将修改后的.pylintrc文件放到PROJECT2路径下,就不会再报Unable to import 'source’pylint(import-error) 的提示了。

    待解决

    但其它提示也被关闭了,比如命名方式,缺少class的描述等。不算是完美的解决方案,后面还有研究一下pylint的设置。

    pyinstaller打包使用 -p 参数

    因为可以正常运行程序,所以按case1中给出的命令直接打包,并显示成功:

    PS ...\PROJECT2> pyinstaller ./ui.py                                    
    218 INFO: PyInstaller: 3.5
    219 INFO: Python: 3.7.0
    224 INFO: Platform: Windows-10-10.0.18362-SP0
    (省略打包过程中输出的信息)
    42134 INFO: Building COLLECT COLLECT-00.toc completed successfully.
    

    把控制台定位到\PROJECT2\dist\ui, 运行ui.exe文件时控制台报错:

    ...\PROJECT2\dist\ui> .\ui.exe
    Traceback (most recent call last):
      File "ui.py", line 7, in <module>
    ModuleNotFoundError: No module named 'source'
    [22424] Failed to execute script ui
    

    此处有坑: 开始以为找不到source 和 pylint 的报错有关,修改.pylintrc后,在代码编辑页面上没有提示后,再生成ui.exe 文件,运行后仍然报错。

    此处真正需要的是为pyinstaller命令使用 -p参数,在打包时将CODE路径添加进去。
    pyinstaller -p .\CODE\ ui.py

    PS ...\PROJECT2> pyinstaller -p .\CODE\ ui.py
    140 INFO: PyInstaller: 3.5
    (省略打包过程中输出的信息)
    48261 INFO: Building COLLECT COLLECT-00.toc completed successfully.
    PS ...\PROJECT2> cd .\dist\ui\                                          PS ...\PROJECT2\dist\ui> .\ui.exe
    welcome Lily
    hello Mike
    

    Case2 小结

    • 在编码时,添加source.py所在路径,注意是以控制台路径为基准
      import sys
      sys.path.append(’./CODE’)
    • 在用pyinstaller打包时,使用 -p参数,添加 CODE文件夹

    Case3:source.py 在ui.py分别在两个平级文件夹内

    文件结构如下,项目名称为PROJECT3,新建同名PROJECT3文件夹

    • PROJECT3
      • CODE
        • source.py
      • UI
        • ui.py

    使用vscode打开PROJECT3,因为在ui.py中增加的路径是以控制台所在路径为基准,所以和Case2 的代码一样:

    '''
    source.py文件在CODE文件夹内
    '''
    import sys
    sys.path.append('./CODE')
    
    import source
    
    # 函数引用
    source.print_name("Lily")
    
    # 类的引用
    OBJ = source.custom_class('Mike')
    OBJ.show_name()
    
    

    正常运行ui.py

    ...\PROJECT3> python .\UI\ui.py
    welcome Lily
    hello Mike
    

    如果将控制台定位到 UI文件夹,运行则会报错,再次验证了之前的发现

    ...\PROJECT3\UI> python .\ui.py
    Traceback (most recent call last):
      File ".\ui.py", line 7, in <module>
        import source
    ModuleNotFoundError: No module named 'source'
    

    pyinstaller 使用 -p参数,添加CODE路径

    和Case2一样,也需要使用-p参数添加CODE所在的路径,注意命令中间的空格,.\CODE\ 是-p的参数,之后的 .\UI\ui.py 是需要打包文件所在位置,具体命令如下:

    \PROJECT3> pyinstaller -p .\CODE\ .\UI\ui.py                      148 INFO: PyInstaller: 3.5
    148 INFO: Python: 3.7.0
    151 INFO: Platform: Windows-10-10.0.18362-SP0
    (省略打包过程中输出的信息)
    33594 INFO: Building COLLECT COLLECT-00.toc completed successfully.
    PS ...\PROJECT3> .\dist\ui\ui.exe
    welcome Lily
    hello Mike
    

    最后

    不同文件路径下的py文件引用,和pylint是否报错无关,和CODE文件夹内是否有 init.py 文件无关。
    开发时只要以控制台作为基准路径,在py文件中添加引用路径,且运行py文件时也在相同的路径下就可以。
    pyinstaller打包要用-p参数,手动添加代码所在的路径

    展开全文
  • 调用其它python脚本中的函数

    千次阅读 2015-05-11 20:30:14
    然后在别的文件中可以调用它定义的函数: 1. import这个文件,其中模块名称就是文件名 2. 用module_name.fun_name()来调用函数。 示例: a.py文件: def my_add(a, b): return a + b def my_minus(a, b):...

    一个python文件中可视作一个模块,其中可以定义多个函数。


    然后在别的文件中可以调用它定义的函数:

    1. import这个文件,其中模块名称就是文件名

    2. 用module_name.fun_name()来调用函数。


    示例:

    a.py文件:

    def my_add(a, b):
        return a + b
    
    def my_minus(a, b):
        return a - b
    
    def my_add_string(a, b):
       return a + b

    b.py文件:

    #!/usr/bin/env python
    
    import a
    
    x = 5
    y = 3
    z = a.my_add(5, 3)
    print z
    
    first = "first"
    second = "second"
    result = a.my_add_string(first, second)
    print result

    执行效果:

    flying-bird@flyingbird:~/examples/python/module_test$ chmod +x b.py
    flying-bird@flyingbird:~/examples/python/module_test$ ./b.py 
    8
    firstsecond
    flying-bird@flyingbird:~/examples/python/module_test$ 
    







    展开全文
  • 将自己py文件所在文件夹路径写入到一个txt文件中,将txt后缀改为path,然后放入anaconda\lib\site-packages中,就可以在新py中对其进行调用,如图所示。
  • VS2017 C/C++调用python脚本文件

    千次阅读 多人点赞 2019-08-20 11:56:15
    在实际的工作中,为了方便利用python写的程序(因为python中有很多功能强大的函数库),有时需要进行c、c++与python的混合编程,特别是需要在c程序中调用python脚本。这时候就到了python展现自己"胶水语言"的一面了...
  • 1.前言 1.1 文章简介 之所以会写本篇博客是因为在用python写代码的时候发现数据分析的时间开销特别大,所以希望来如何去尽可能优化我的python代码(本篇目的旨在优化我的python代码,仅供...通过遍历三个层级的文件...
  • python的陌生函数

    2020-09-15 11:33:44
    1.join()函数 例: ' , '.join('abc') 其输出结果为: 'a,b,c'(将字符串abc中的每个成员用' , '分隔开再拼接成一...换句话来说,就是只有当此.py文件调用别的.py文件的函数,而不是别的.py文件调用此.py函数才...
  • 也是前两天遇到的问题,一般来说遇到这样的问题是像我似的,把代码都写到一个文件里,后来做别的东西跟它衔接的时候发现需要用里面的函数,但是又觉得从这个文件拷贝函数到那个文件太low了...而且不利于维护和修改,...
  • 好嘞,我们开始(这个调用接口和别的API不一样,他需要用requests库请求三次)我们先去创建一个属于我们的应用之后我们去查看文档帮助第一步我们获取access_token在这里我把文件路径放在了函数里面,可以放在外面,...
  • pythonos函数

    2017-05-06 20:44:45
    python中经常需要调用目录下面的一些文件这就需要获取目录中的内容,所以要使用一些特别的函数,比如os。 这个函数作用广泛。本文只介绍以下几种功能,其余功能日后再补:os.getcwd(),os.path.abspath('.'),os....
  • 百度了下这个rewind函数可以把文件指针的位置倒回文件的开头,听起来好像有用,但是执行起来发现 AttributeError: 'generator' object has no attribute 'rewind' 这里记录下,看看有什么解决办法没 ...
  • python——定义函数

    2018-11-30 22:13:56
    下面将注意力转向创建自己的函数。作为一个例子,咱们来编写一个技术圆面积的函数。你应该还记得,圆面积为pi乘以半径的平方。...如果输入无误,将出现一个提示符,但除此之外无他物,这是因为你必须调用函数...
  • Python中的模块是一个包含事先定义好的函数和变量的文件,其后缀名是.py。 模块可以被别的程序引入,已使用该模块中的函数等功能。 内部可包含定义好的函数、变量、类、数据、执行的功能。 模块有内置模块、自定义...
  • py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用? 类就是用来面向对象编程啦,类可以有自己属性,类可以创建很多实例,每个实例...
  • Python的实例方法,类方法,静态方法之间区别及调用关系 如果只看这个图,很多人可能会看一头雾水,特别是学过完全面向对象语言同学, Python 是双面向,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是...
  • 一个包含所有定义的函数和变量的文件,后缀名是.py,模块可以被别的程序引入,被调用,如同库一样。 import 使用import来引入模块,每个模块中有着自己的内容,同样引入别的.py模块 也是使用import 进行调用。 当...
  • 如果直接写 Python 文件调用数据分析模块,那么使用方法非常简单: from analyze import FathersAnalyzer data = [...] father = FathersAnalyzer(data) result = father.analyze() print(f'分析结果为:{result}...
  • 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。 下面是一个使用 python 标准库中模块的例子。 #!/usr/bin...
  • Python30--文件系统】

    2019-10-04 09:38:45
    定义:模块是一个包含所有定义的函数和变量的文件,后缀名是.py。模块可以被别的程序引用,以使用该模块中的函数等功能 >>> secret = random.randint(1,10) #调用random里面的randint,1到10 的随机数...
  • 本项目提供了一个利用Python调用ICTCLAS(NLPIR)便捷接口,可以通过一个函数调用返回分词后结果。 具体使用方法示例参见nlpir.py文件当中main函数。 使用说明 温馨提示:如果您是Python初学者请您特别留意...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 192
精华内容 76
关键字:

python调用别的文件的函数

python 订阅