繁体   English   中英

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

[英]I want to be able to load class from both root and sub path

我有个问题。

我的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方法来完成同一件事吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM