Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我希望能够从根路径和子路径加载类_Python_Python 3.x_Import - Fatal编程技术网

Python 我希望能够从根路径和子路径加载类

Python 我希望能够从根路径和子路径加载类,python,python-3.x,import,Python,Python 3.x,Import,我有个问题 我的python项目路径如下: code_root | - code_sub | |- b.py | -- c.py - a.py 所以我找到了解决办法 如下图所示: from os.path import dirname curpath = dirname(__file__) if len(curpath) == 0: curpath = '.' c = imp.load_s

我有个问题

我的python项目路径如下:

code_root | - code_sub | |- b.py | -- c.py - a.py 所以我找到了解决办法

如下图所示:



    from os.path import dirname
    curpath =  dirname(__file__)

    if len(curpath) == 0:
        curpath = '.'
    c = imp.load_source('c', curpath+'/c.py')


这是可行的,但似乎不是最好的解决方案。有没有更标准的Python方法可以用来完成同样的任务?

我通常将我的项目设置为如下,并使用完全限定的路径进行导入。另外,我强烈建议您使用虚拟环境——然后您可以使用命令“add2virtualenv MyWorkinator,workinator”,这将大大降低导入的复杂性

   MyWorkinator   (Project level folder)
    |
    - workinator   (All code here)
      |
      - package_a
        |
        - a1.py
        - a2.py
      - package_b
        |
        - b1.py
        - b2.py
      c.py
在c.py中:

import workinator.package_b.b1
在b2.py中:

import workinator.package_a.a1
   MyWorkinator   (Project level folder)
    |
    - workinator   (All code here)
      |
      - package_a
        |
        - a1.py
        - a2.py
      - package_b
        |
        - b1.py
        - b2.py
      c.py
import workinator.package_b.b1
import workinator.package_a.a1