Virtualenv 找不到导入的模块
我有一个项目,是用虚拟环境(virtualenv)打包的。它顺利安装了setuptools和pip,并设置了所有需要的文件夹。接着我运行了source bin/activate
,并安装了我项目所需的库:xmlutils和configparser。
我把项目文件夹压缩成了一个zip文件,然后尝试在另一台电脑上使用它。我可以毫无问题地运行source bin/activate
。但是,当我运行我的脚本时,系统找不到xmlutils这个模块。我查看了项目中的“libs/site-packages”文件夹,发现这个模块确实在那里。
这是不是因为我需要在另一台电脑上安装虚拟环境呢?
这是我设置虚拟环境后的项目结构:
项目: bin include lib lib64 projectScript.py projectScript2.py
1 个回答
4
在创建一个虚拟环境(virtualenv)时,它是绑定在一个特定的路径上的,这意味着你不能重命名它或者移动它。如果你想要创建一个可以移动的虚拟环境,可以使用文档中提到的 --relocatable
选项,具体可以查看这里。
要让虚拟环境可以移动,你需要使用的命令是:
virtualenv --relocatable ENV
注意两点:
- 这个功能还在实验阶段,不保证一定能用。
- 如果你在虚拟环境中添加了新的包,必须再次运行上面的命令。
另外(正如我在评论中提到的),你可以使用 pip freeze > requirements.txt
来保存一个文本文件,这个文件里包含了你虚拟环境中所有包的需求。然后你可以在新的虚拟环境中使用命令 pip install -r requirements.txt
来安装这些包。