1

我在通过创建的虚拟环境中工作pyenv virtualenv,我的文件夹结构如下所示

ProjectFolder (virtual env)
    Subfolder
        modulea.py
        __init__.py
    main.py

main.py我想调用modulea.py 中定义的函数。然而,

from Subfolder.modulea import function 

产生错误

没有名为 Subfolder.modulea 的模块;子文件夹不是包。

当我在虚拟环境之外重现带有一些测试文件的模拟结构时,一切正常。此外,当我modulea.py进入 ProjectFolder 时,导入效果很好。

4

1 回答 1

4

一种可能的解决方法如下。在目录中~/.pyenv/versions/your_virtual_environment/lib/your_python_version/site-packages 添加一个带有扩展名的文件,.pth 将所有子文件夹的路径写入此文件,其中包含您要导入的模块。

home/usr/Projects/Projectfolder/Subfolder/

这会将目录添加到 python PATH。然后,from Subfolder.modulea import function您可以直接导入 import via ,而不是通过导入from modulea import function。或者,在导入之前通过应该将子文件夹添加到 Python 路径sys.path.append,应该做同样的工作。

但是,我仍然很困惑为什么通常的“从...导入...”语法在虚拟环境中似乎不起作用。

于 2019-10-31T15:40:39.863 回答