Ril*_*ins 157 python ubuntu pip virtualenv
我已经创建了文件夹并在其中初始化了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没有安装.如何在不破坏环境的情况下重命名项目文件夹?
ire*_*ses 145
您需要调整安装以使用相对路径.virtualenv为此提供了--relocatable选项.来自文档:
通常,环境与特定路径相关联.这意味着您无法移动环境或将其复制到另一台计算机.您可以修复一个环境,使其可以使用以下命令进行重定位:
$ virtualenv - 可定位的ENV
注意: ENV是虚拟环境的名称,您必须从ENV目录外部运行它.
这将使一些由setuptools创建的文件或分发使用相对路径,并将更改所有脚本以使用activate_this.py而不是使用Python解释器的位置来选择环境.
注意:在将任何软件包安装到环境中之后,必须运行此命令.如果您使环境可重定位,然后安装新包,则必须再次运行virtualenv --relocatable.
hol*_*lys 103
我相信的是. env/bin/activate.所以,这是解决这个问题的另一种方法.
当你运行:
/tmp
它实际上执行以下命令:
(我测试了这个myproject)
VIRTUAL_ENV="/tmp/myproject/env"
export VIRTUAL_ENV
Run Code Online (Sandbox Code Playgroud)
但是,您刚刚重命名project为pip is not installed,因此命令无法执行.这就是为什么它说pip,因为你既没有安装 pip 在系统全局环境中也没有你的virtualenv /tmp/project/env/bin/activate正确采购.
如果您想手动修复此问题,那就是:
VIRTUAL_ENV='/tmp/myproject/env'用你最喜欢的编辑器修改,比如Vim,通常在
VIRTUAL_ENV='/tmp/project/env'
/tmp/project/env/bin/pip => #!/tmp/myproject/env/bin/python
修改#!/tmp/project/env/bin/python中env
pip => . env/bin/activate
之后,/tmp再次激活您的虚拟环境,您将看到您myproject又回来了.
bnj*_*jmn 38
注意:作为@jb.指出,此解决方案仅适用于轻松(重新)创建的virtualenvs.如果环境需要几个小时才能安装,则不建议使用此解决方案
Virtualenvs很棒,因为它们易于制作和转换; 它们使您无法锁定单一配置.如果您了解项目要求,或者可以获得它们,请创建一个新的virtualenv:
创建一个requirements.txt文件
(env)$ pip freeze > requirements.txt
requirements.txt文件,请env/lib/pythonX.X/site-packages在删除原件之前进行检查env.删除现有的 (env)
deactivate && rm -rf env
创建新的virtualenv,激活它并安装需求
virtualenv env && . env/bin/activate && pip install -r requirements.txt
或者,使用virtualenvwrapper使事情变得更容易,因为所有的virtualenvs都保存在一个集中的位置
$(old-venv) pip freeze > temp-reqs.txt
$(old-venv) deactivate
$ mkvirtualenv new-venv
$(new-venv) pip install -r temp-reqs.txt
$(new-venv) rmvirtualenv old-venv
Run Code Online (Sandbox Code Playgroud)
Afr*_*ave 28
我总是安装virtualenvwrapper来帮忙.从shell提示符:
pip install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
virtualenvwrapper文档中记录了一种方法 - cpvirtualenv 这就是你要做的.确保您不在环境中并返回shell提示符.使用所需名称键入:
cpvirtualenv oldenv newenv
Run Code Online (Sandbox Code Playgroud)
然后,如有必要:
rmvirtualenv oldenv
Run Code Online (Sandbox Code Playgroud)
要去你的新人:
workon newenv
Run Code Online (Sandbox Code Playgroud)
rya*_*yer 16
您可以按照以下步骤解决问题:
$ virtualenv ..\path\renamed_directory$ scripts/activate$ pip freeze 验证您的包裹是否到位Ant*_*ins 12
还有另外一种方法可以帮助我很多次没有问题的是virtualenv-clone:
pip install virtualenv-clone
virtualenv-clone old-dir/env new-dir/env
Run Code Online (Sandbox Code Playgroud)
在您的项目文件夹中运行它:
cd bin
sed -i 's/old_dir_name/new_dir_name/g' *
Run Code Online (Sandbox Code Playgroud)
不要忘记停用和激活。
| 归档时间: |
|
| 查看次数: |
62729 次 |
| 最近记录: |