相关疑难解决方法(0)

给定完整路径如何导入模块?

如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.

python configuration python-module python-import

1022
推荐指数
18
解决办法
80万
查看次数

python导入路径:不同文件夹中具有相同名称的包

我正在为几个客户同时开发几个Python项目.我的项目文件夹结构的简化版本如下所示:

/path/
  to/
    projects/
      cust1/
        proj1/
          pack1/
            __init__.py
            mod1.py
        proj2/
          pack2/
            __init__.py
            mod2.py
      cust2/
        proj3/
          pack3/
            __init__.py
            mod3.py
Run Code Online (Sandbox Code Playgroud)

当我例如希望从使用功能proj1,我延伸sys.path通过/path/to/projects/cust1/proj1(例如,通过设置PYTHONPATH或添加.pth文件到site_packages文件夹或甚至修改sys.path直接地),然后导入模块是这样的:

>>> from pack1.mod1 import something
Run Code Online (Sandbox Code Playgroud)

当我处理更多项目时,不同的项目具有相同的包名称:

/path/
  to/
    projects/
      cust3/
        proj4/
          pack1/    <-- same package name as in cust1/proj1 above
            __init__.py
            mod4.py
Run Code Online (Sandbox Code Playgroud)

如果我现在简单地扩展sys.path通过/path/to/projects/cust3/proj4,我仍然可以从进口proj1,而不是从proj4:

>>> from pack1.mod1 import something
>>> from pack1.mod4 import something_else
ImportError: No module named mod4
Run Code Online (Sandbox Code Playgroud)

我认为第二次导入失败的原因是Python只搜索 …

python path python-import

22
推荐指数
1
解决办法
1万
查看次数

Python:导入具有相同名称的不同模块

我正在处理一个需要多个同名模块的项目。这是架构的代表性摘录,其中包含__init__.py显示哪些文件夹是模块的文件:

/path1
    /ProjectA
        __init__.py
        /src
            __init__.py
            /ctrl
                __init__.py
                somectrl.py
            ...
/path2
    /ProjectA
        __init__.py
        /src
            __init__.py
            someclass.py
Run Code Online (Sandbox Code Playgroud)

在我的课堂上someclass.py,我想像这样导入somectrl.py

from ProjectA.src.ctrl import somectrl
Run Code Online (Sandbox Code Playgroud)

但是导入失败:它告诉我没有ctrl包。似乎它只是查看ProjectAfrom path2,而完全忽略ProjectAfrom path1!双方path1path2都在我PYTHONPATH。那他们两个都联系不上吗?

有没有干净的方法摆脱这种令人讨厌的情况?

python python-import

4
推荐指数
1
解决办法
910
查看次数