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

标签 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 方法来完成同样的事情吗?

最佳答案

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

关于python - 我希望能够从根路径和子路径加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537952/

相关文章:

php - Python 相当于 PHP 的 compact() 和 extract()

python - 在 python 中使用 numpy 获取避免 nan 的平均值

python - dict.get(x,y) 总是计算右边的参数

python - 在条件下在python中选择数组

python-3.x - 如何在sublime text 3中将项目路径添加到PYTHONPATH

android - 将 Actionbarsherlock 导入到 Eclipse 中

Magento 更新 csv 并取消设置特价

javascript - 在 JavaScript 中运行 python

python - Opencv或Numpy-有效替换图像中的像素列表

c# - Excel/Quickbooks 数据到 c#