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

时间:2017-11-28 17:50:58

标签: python python-3.x import

我有一个问题。

我的python项目路径如下:


    code_root
    |
    - code_sub
    |    |- b.py
    |    -- c.py
    - a.py

从b.py导入了code_sub的c.py.

所以我希望能够从code_root和code_sub路径加载b.py。

例如:


    code_root>$ python nlp.py


    code_root/code_sub>$ python b.py

这里的问题是调用c.py。

b.py不应该像这样导入c.py:



    # b.py 
    import c


所以我找到了解决方案。

如下所示:



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

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


这有效,但它似乎不是最好的解决方案。是否有更标准的Python方法可以用来完成同样的事情?

1 个答案:

答案 0 :(得分:2)

我通常将项目设置如下,并为我的导入使用完全限定的路径。此外,我强烈建议您使用虚拟环境 - 然后您可以使用命令" 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