安装的 Virtualenv 和激活 virtualenv 不起作用

Installed Virtualenv and activating virtualenv doesn't work

我从 Github 帐户克隆了我的 Django 项目并使用著名命令 source nameofenv/bin/activate 激活了 virtualenv 当我 运行 python manage.py runserver

它给我一个错误提示:

ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

ubuntu 版本

#install python pip 
sudo apt-get install python-pip
#install python virtualenv
sudo apt-get install python-virtualenv
# create virtual env 
virtualenv  myenv
#activate the virtualenv
. myenv/bin/activate
#install django inside virtualenv
pip install django
#create a new django project
django-admin.py startproject mysite
#enter to the folder of the new django project
cd mysite
#run the django project
python manage.py runserver 

I was thinking that every and each dependency I need, might be present inside virtualenv.

嗯,不。默认情况下,新创建的 virtualenv 是空的,即没有第三方库。 (可选地,您可以允许 virtualenv 访问系统范围内安装的库,但这是另一回事。)

创建好virtualenv后,你需要安装你需要的依赖。

(virtualenv 怎么知道你需要什么依赖?)

过程是安装 virtualenv,激活它,然后安装项目所需的库(在你的情况下是 Django 或其他)。

如果您的项目有 requirements.txt,您可以使用以下命令安装每个必需的依赖项:

pip install -r requirements.txt

如果你的项目有setup.py,你也可以执行

pip install -e path/to/your/project/clone/.

将项目安装到 virtualenv 中。这应该安装依赖项。

当然,如果唯一的依赖是Django,你可以输入

pip install django

我猜你也从你的另一台电脑上传了虚拟环境。你希望只有激活它才能起作用,bzz。

不建议将 virtualenv 文件上传到您的 git 存储库,因为@Alain 说最好有一个包含项目依赖项的 requirements.txt 文件。可以使用pip freeze > requirements.txt(环境激活时)生成项目需求文件。

这样做,当您从另一台计算机克隆存储库时,您需要通过发出命令来创建一个新的 virtualenv:

virtualenv nameofenv

然后激活它:

source nameofenv/bin/activate

最后,使用需求文件为您的项目安装需求:

pip install -r requirements.txt

如果你的机器上有多个python,例如python2.7python3.4python3.6,弄清楚[=是哪个版本是很重要的12=] 确实参考了 pip 参考了哪个版本。

安装 let's encrypt 后,当我 运行 以下命令时,我遇到了同样的问题。

(python3 manage.py runserver 0:8000 &)

我检查了python版本,发现python3python3.4python3.6python3.4m都可用。

我把python3改成python3.6就解决了问题

(python3.6 manage.py runserver 0:8000 &)

所以,这可能是版本不匹配的问题,如果用了很长时间,突然崩溃了。

我通过 pip3 install Django 安装了 Django 2,但我是 运行 python manage.py runserver 而不是 python3 manage.py runserver。 Django 2 仅适用于 python 3+.