use*_*739 38 python pip virtualenv
我使用以下命令创建了virtualenv.
mkvirtualenv --distribute --system-site-packages "$1"
Run Code Online (Sandbox Code Playgroud)
在启动virtualenv之后workon,我输入ipython.它提示我
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
Run Code Online (Sandbox Code Playgroud)
当我尝试使用virtualenv安装ipython时,我收到以下错误消息:
pip install ipython
Requirement already satisfied (use --upgrade to upgrade): ipython in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Cleaning up...
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在virtualenv内安装?
Cha*_*ffy 28
--no-site-packages如果您不希望它能够使用外部库,请创建您的virtualenv :
virtualenv --no-site-packages my-virtualenv
. my-virtualenv/bin/activate
pip install ipython
Run Code Online (Sandbox Code Playgroud)
否则,如您的示例所示,它可以看到系统Python环境中安装的库满足您请求的依赖项.
iva*_*ncz 24
避免头痛和最佳实践:
虚拟环境不是您的git项目的一部分(它们不需要版本化)!
为您的虚拟环境创建一个文件夹.
为了更好的表示,这是一个模拟:
$ mkdir venv
Run Code Online (Sandbox Code Playgroud)
$ cd venv/
$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.
Run Code Online (Sandbox Code Playgroud)
$ source google_drive/bin/activate
Run Code Online (Sandbox Code Playgroud)
(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...
Run Code Online (Sandbox Code Playgroud)
(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>
>>> gdrive = pydrive.auth.GoogleAuth()
>>>
Run Code Online (Sandbox Code Playgroud)
(google_drive) $ deactivate
$
Run Code Online (Sandbox Code Playgroud)
$ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>>
Run Code Online (Sandbox Code Playgroud)
Virtualenv为您创建了一个全新的环境,定义了$ PATH和其他一些变量和设置.当你使用sudo pip install package时,你正在以root身份运行Virtualenv ,逃避创建的整个环境,然后在全局站点包上安装包,而不是在你有虚拟环境的项目文件夹中安装,尽管你激活了环境.
...你必须从项目bin目录中的某些文件中调整一些变量.
例如:
bin/pip,第1行(She Bang)
bin/activate,第42行(VIRTUAL_ENV)
好吧,我没有一个适当的理由来解释为什么会出现这种情况,但后来我发现了一个小小的工作
在VirtualEnvironment内部
pip install -Iv package_name==version_number
Run Code Online (Sandbox Code Playgroud)
现在,这将在您的虚拟环境中安装该版本
此外,您可以使用此功能在虚拟环境中进行检查
pip install yolk
yolk -l
Run Code Online (Sandbox Code Playgroud)
这将为您提供两个位置(system和virtualenv)中所有已安装软件包的详细信息
虽然有些人可能会说它不适合使用--system-site-packages(可能是真的),但是如果你已经在virtualenv中做了很多东西呢?现在你不想从头开始重做一切.
你可以用这个作为黑客,下次要小心:)
对于Python 3:
pip3 install virtualenv
python3 -m venv venv_name
source venv_name/bin/activate #key step
pip3 install "package-name"
Run Code Online (Sandbox Code Playgroud)
为了进一步澄清这里的其他答案:
在当前版本的 virtualenv 下, --no-site-packages 标志是默认行为,因此您不需要指定它。但是,您通过显式使用 --system-site-packages 标志来覆盖默认值,这可能不是您想要的。默认行为(不指定任一标志)是创建虚拟环境,这样当您使用它时,安装在环境外部的任何 Python 包都无法访问。这通常是正确的选择,因为它可以最好地将虚拟环境与本地计算机环境隔离。环境中安装的 Python 包不会影响您的本地计算机,反之亦然。
其次,要在创建虚拟环境后使用它,您需要导航到虚拟环境目录,然后运行:
bin/activate
Run Code Online (Sandbox Code Playgroud)
其作用是配置环境变量,以便虚拟环境 bin 文件夹中的 Python 包和任何可执行文件将在本地计算机上标准位置中的那些之前使用。因此,例如,当您键入“pip”时,虚拟环境中的 pip 版本将运行,而不是本地计算机上的 pip 版本。这是可取的,因为虚拟环境中的 pip 将在虚拟环境中安装软件包。
您遇到的问题是因为您正在从本地计算机运行程序(例如 ipython),而您想要安装并运行在虚拟环境中隔离的这些程序的副本。您可以通过以下方式进行设置:创建环境(如果使用当前版本,则无需指定任何站点包标志),运行上面提到的激活脚本,然后运行 pip 来安装您需要的任何包(这将进入环境内部)。
您可以转到您venv所在的文件夹并右键单击 ->git bash here.
然后您就可以了python -m pip install ipython,它将安装在该文件夹中。
我发现使用virtualenv在项目文件夹中创建 venv的包更方便。
| 归档时间: |
|
| 查看次数: |
87207 次 |
| 最近记录: |