相关疑难解决方法(0)

Python:从项目层次结构中同一级别的另一个目录导入模块

我已经看过各种各样的例子和其他类似的问题,但我似乎无法找到一个与我的场景完全匹配的例子.我觉得这总是一个问题,因为有很多类似的问题,但我似乎无法让这个工作"正确".这是我的项目:

user_management  (package)
        |
        |------- __init__.py
        |
        |------- Modules/
        |           |
        |           |----- __init__.py
        |           |----- LDAPManager.py
        |           |----- PasswordManager.py
        |
        |------- Scripts/
        |           |
        |           |----- __init__.py
        |           |----- CreateUser.py
        |           |----- FindUser.py
Run Code Online (Sandbox Code Playgroud)

如果我将"CreateUser.py"移动到主user_management目录,我可以轻松地使用:"import Modules.LDAPManager"导入LDAPManager.py ---这可行.我不能做的(我想做的)是将CreateUser.py保存在Scripts子文件夹中,然后导入LDAPManager.py.我希望通过使用来实现这一目标"import user_management.Modules.LDAPManager.py".这不起作用.简而言之,我可以让Python文件轻松地在层次结构中更深入地查看,但是我无法获得Python脚本来引用一个目录而不是另一个目录.

请注意,我能够使用以下方法解决我的问题:

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import Modules.LDAPManager as LDAPManager
Run Code Online (Sandbox Code Playgroud)

我听说这是不好的做法而且气馁.

脚本中的文件是直接执行的(脚本中的init .py甚至是必要的吗?).我已经读过,在这种情况下,我应该使用-m标志执行CreateUser.py.我已经尝试了一些变体,似乎无法让CreateUser.py识别LDAPManager.py.

python module path package python-2.7

74
推荐指数
3
解决办法
9万
查看次数

将pytest与src图层一起使用

pytest建议包含一个额外的目录来分隔项目中的源代码:

my_package
??? src  # <-- no __init__.py on this layer
?   ??? my_package
?       ??? __init__.py
?       ??? util_module
?           ??? __init__.py
?           ??? utils.py
??? tests
    ??? __init__.py
    ??? test_util_module
        ??? __init__.py
        ??? test_utils.py
Run Code Online (Sandbox Code Playgroud)

可悲的是,他们没有说1关于测试代码中的导入应该如何在这种情况下工作,这对于我的IDE在这个天真的例子2中工作得很好,但是导致pytest出现以下错误:

my_package $ pytest

====================== test session starts ======================
platform linux -- Python 3.6.4, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /home/user/workspace/my_package, inifile:
collected 0 items / 1 errors     

============================ ERRORS =============================
___ ERROR collecting tests/test_util_module/test_utils.py ___
ImportError while importing test …
Run Code Online (Sandbox Code Playgroud)

python pytest

13
推荐指数
2
解决办法
2036
查看次数

标签 统计

python ×2

module ×1

package ×1

path ×1

pytest ×1

python-2.7 ×1