【问题标题】:cannot import local module inside virtual environment from subfolder无法从子文件夹导入虚拟环境中的本地模块
【发布时间】:2019-10-31 11:06:48
【问题描述】:

我在通过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 时,导入效果很好。

【问题讨论】:

  • 您是否使用了编辑器/IDE,例如 vscode 或 pycharm?
  • 我一般使用 emacs。但是,当我在终端中执行 ipython 中的脚本时,问题是一样的。

标签: python pyenv import-module


【解决方案1】:

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

home/usr/Projects/Projectfolder/Subfolder/

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2023-01-14
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多