我正在寻找一种方法来制作一个virtualenv,其中只包含基本python安装的一些库(我选择).
更具体一点,我正在尝试在virtualenv的创建过程中将matplotlib导入virtualenv.它无法通过pip或easy_install高效安装,因为它错过了一些fortran编译器库.我到目前为止的方式是手动复制
/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/
Run Code Online (Sandbox Code Playgroud)
但是这可以防止yolk注册manully导入的链接(打印virtualenv中所有当前可用的库).
那么,有没有办法做一个选择性的变体
virtualenv --system-site-packages
Run Code Online (Sandbox Code Playgroud) 我最近发现康达我是有安装SciPy的麻烦后,确切的说是我开发一个应用程序的Heroku.
使用Conda,您可以创建与virtualenv非常相似的环境.我的问题是:
--userpip 有一个选项可以为每个用户安装一个Python包:
pip install --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)
我使用此选项在我没有root访问权限的服务器上安装软件包.我现在需要的是卸载当前用户的已安装软件包.我试图执行这个命令:
pip uninstall --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)
但我得到了:
no such option: --user
Run Code Online (Sandbox Code Playgroud)
pip install --user除了手动查找和删除软件包之外,如何卸载我安装的软件包?
我发现了这篇文章
其中描述了不支持从用户目录卸载软件包.根据文章,如果它是正确实施然后与
pip uninstall [package-name]
Run Code Online (Sandbox Code Playgroud)
安装的软件包也将在用户目录中搜索.但问题仍然存在.如果在系统范围内和每个用户安装相同的软件包怎么办?如果有人需要定位特定的用户目录怎么办?
有没有办法升级virtualenv中使用的python版本(例如,如果出现错误修复版本)?
我可以pip freeze --local > requirements.txt,然后删除目录pip install -r requirements.txt,但这需要大量重新安装大型库,例如,numpy我使用了很多.
升级时可以看出这是一个优势,例如2.6 - > 2.7,但是2.7.x - > 2.7.y呢?
virtualenv尽管做了各种尝试,我还是无法上班.我virtualenv使用以下命令在MAC OS X上安装:
pip install virtualenv
Run Code Online (Sandbox Code Playgroud)
并且还加入了PATH我的.bash_profile.每次我尝试运行该virtualenv命令时,它返回:
-bash: virtualenv: command not found
Run Code Online (Sandbox Code Playgroud)
每次我跑pip install virtualenv,它返回:
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
我明白在mac中,virtualenv应该正确安装
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
在virtualenv确实安装/usr/local/bin,但每当我试图运行virtualenv命令,该命令没有找到.我也试过virtualenv在目录中运行命令/usr/local/bin,它给了我相同的结果:
-bash: virtualenv: command not found
Run Code Online (Sandbox Code Playgroud)
这些是我添加到.bash_profile中的PATH
export PATH=$PATH:/usr/local/bin
export PATH=$PATH:/usr/local/bin/python
export PATH=$PATH:/Library/Framework/Python.framework/Version/2.7/lib/site-packages
Run Code Online (Sandbox Code Playgroud)
有没有解决方法呢?为什么会这样?
我最近学会了如何在我的工作流程中使用virtualenv和virtualenvwrapper,但我在一些指南中看到了pyenv,但我似乎无法理解pyenv是什么以及它与virtualenv的不同/相似之处.pyenv是virtualenv或免费工具的更好/更新的替代品吗?如果后者有什么不同的做法,那么两者(以及virtualenvwrapper,如果适用)如何协同工作?
是否有类似于Python实用程序virtualenv的东西?
基本上它允许您将Python包安装到沙盒环境中,所以 easy_install django不会进入系统范围的site-packages目录,它将进入virtualenv创建的目录.
例如:
$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin
Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer
/Users/dbr/test/bin/tvnamer
Run Code Online (Sandbox Code Playgroud)
RubyGems有这样的东西吗?
我已经创建了文件夹并在其中初始化了virtualenv实例.
$ mkdir myproject
$ cd myproject
$ virtualenv env
Run Code Online (Sandbox Code Playgroud)
当我运行时(env)$ pip freeze,它会显示已安装的软件包.
现在我想重命名myproject/为project/.
$ mv myproject/ project/
Run Code Online (Sandbox Code Playgroud)
但是,现在我跑的时候
$ . env/bin/activate
(env)$ pip freeze
Run Code Online (Sandbox Code Playgroud)
它说pip没有安装.如何在不破坏环境的情况下重命名项目文件夹?
我正在尝试编写(我认为会是)一个简单的bash脚本,它将:
第1步工作得很好,但我似乎无法激活virtualenv.对于那些不熟悉virtualenv的人,它会创建一个activate激活虚拟环境的文件.在CLI中,您可以使用它运行它source
source $env_name/bin/activate
Run Code Online (Sandbox Code Playgroud)
其中$ env_name显然是安装虚拟环境的目录的名称.
在我的脚本中,在创建虚拟环境之后,我将激活脚本的路径存储如下:
activate="`pwd`/$ENV_NAME/bin/activate"
Run Code Online (Sandbox Code Playgroud)
但是当我打电话时source "$activate",我得到了这个:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Run Code Online (Sandbox Code Playgroud)
我知道它$activate包含激活脚本的正确路径,实际上我甚至在调用之前测试文件是否在那里source.但source它本身似乎无法找到它.我也尝试在CLI中手动运行所有步骤,其中一切正常.
在我的研究中,我发现了这个脚本,它与我想要的类似,但也做了许多其他我不需要的事情,比如将所有虚拟环境存储在〜/ .virtualenv目录中(或者其他任何内容) $ WORKON_HOME).但在我看来,他正在创造通往我的道路activate,并source "$activate"以与我相同的方式打电话.
这是完整的脚本:
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: …Run Code Online (Sandbox Code Playgroud) 我有一个Heroku项目,它使用环境变量来获取其配置,但我使用virtualenv首先在本地测试我的应用程序.
有没有办法在virtualenv中设置远程机器上定义的环境变量?