首页 > 解决方案 > 如何使用 virtualenv 和 pip 从本地存储库导入模块

问题描述

我有一个我认为有一个简单答案的问题,但由于某种原因,我很难自己找到它。我已经使用 virtualenv 创建并激活了一个虚拟环境,我正在尝试安装所有必要的包以创建一个 requirements.txt 文件。

例如,我有一个这样开头的 Python 文件:

import xml.etree.ElementTree as ET
from lib.project import Projector
from lib import writer
import os
import datetime
from datetime import timedelta
from datetime import datetime
import pprint

当我尝试从虚拟机运行此文件时,我收到以下错误:

Traceback (most recent call last):
  File "readMap.py", line 2, in <module>
    from lib.project import Projector
ModuleNotFoundError: No module named 'lib.project'

我的问题是我不确定为什么虚拟环境找不到project.py。我的目录结构是:

regiaoSul
         lib
            __init__.py
            arrival_conversion.py
            coord_conversion.py
            message_conversion.py
            project.py
            route_conversion.py
            stop_conversion.py
            wkt_parser.py
            writer.py
readMap.py
json_generator.py

标签: pythonmodulepipvirtualenv

解决方案


第 2 行的导入意味着 lib 是一个模块,而不是“一个简单的存储库”。我将尝试使用标志 -m 运行脚本。像这样的东西-

python -m script_name 

确保在使用 -m 标志运行时删除 .py 扩展名。

另一个建议:您不需要将 python 文件安装到虚拟环境中,它们不是一些外部库。当您运行脚本时,它们只需要存在(具有相同的打包顺序)。


推荐阅读