无法在 Vagrant 中使用 Virtualenv 导入模块

Cannot import modules using Virtualenv in Vagrant

这是我第一次尝试建立一个 vagrant 环境或 python virtuelenv,所以如果我遗漏了一些基本的东西,请原谅我。

现在,我通过 ssh 进入我的 vagrant box,并在主目录中放置了我的 venv 文件夹。我有 运行

source venv/bin/activate 

从我的主目录移动到 /vagrant,在这里我的项目文件布局如下:

├──project
├── LICENSE
│
├── project
│   │   ├── exceptions.py
│   │   ├── __init__.py
│   │   ├── resources
│   │   │   ├── base.py
│   │   │   ├── __init__.py
│   │   └── target
│   │       └── __init__.py
│   │       └── test.py
│   ├── README.md

我的问题是我无法在不同的目录中导入我的模块。例如,如果我在 /vagrant/project/project/target/test.py 中并尝试:

import project.exceptions

我会得到错误

ImportError: No module named project.exceptions

如果我在 /vagrant/project/project 目录中并且 运行

import exceptions

很好用。

我已经阅读了人们在 Whosebug 上遇到的类似问题。

基于这个问题:Can't import package from virtualenv 我已经检查了我的 sys.executable 路径在我的 python 解释器和我的 运行 脚本中是相同的(home/vagrant/venv/bin/python)

基于这个问题:Import error with virtualenv。我直接运行~/venv/bin/python尝试导入,导入还是失败。

如果我可以提供更多信息,请告诉我。谢谢。

您有两个选择:

  1. 您可以通过编写 setup.py 文件并调用 python setup.py install 将您的项目安装到虚拟环境中。参见 Python Packaging User Guide.

  2. 您可以将 PYTHONPATH 环境变量设置为指向您的项目,如下所示:

    $ export PYTHONPATH=$PYTHONPATH:/vagrant/project