【问题标题】:changing virtualenv folder on windows在 Windows 上更改 virtualenv 文件夹
【发布时间】:2013-05-23 02:01:12
【问题描述】:

在计算机修复后,我的 python 项目目录(windows)发生了变化(比如从 d: 到 f:)。 现在我所有的 virtualenvs 都坏了。激活 env 后,virtualenv 中的项目找不到依赖项,并且自定义脚本(来自 env\scripts 文件夹)将不起作用

试运行:

virtualenv --relocateble ENV_NAME (with the env name ..)

就像在这个stackoverflow question 中一样,它输出了很多行,例如:

Script agent\Scripts\deactivate.bat cannot be made relative

我的 virtualenv 还是坏了。

当我手动将 activate.bat set VIRTUAL_ENV 更改为新路径时。一些脚本再次起作用。但是重定位脚本仍然没有运行,并且大部分脚本仍然损坏

即使运行 python interpeter 也会失败:

Traceback (most recent call last):
  File "F:\Python27\learn\agent\agent\lib\site.py", line 677, in <module>
    main()
  File "F:\Python27\learn\agent\agent\lib\site.py", line 666, in main
    aliasmbcs()
  File "F:\Python27\learn\agent\agent\lib\site.py", line 506, in aliasmbcs
    import locale, codecs
  File "F:\Python27\learn\agent\agent\lib\locale.py", line 19, in <module>
    import functools
ImportError: No module named functools

有什么办法可以解决这个问题吗?帮助

更新:我还手动更改了 ENV\Scripts 中所有脚本中的 shebang python interpeter 行。现在都以与上面相同的python失败而失败

另一个更新:到@udi系统python路径是:

['', 'C:\\dev\\Python27\\lib\\site-packages\\distribute-0.6.37-py2.7.egg', 'C:\\
dev\\Python27\\lib\\site-packages\\pip-1.3.1-py2.7.egg', 'C:\\dev\\Python27\\lib
\\site-packages\\numpy-1.7.1-py2.7-win32.egg', 'C:\\dev\\Python27\\lib\\site-pac
kages\\pandas-0.11.0-py2.7-win32.egg', 'C:\\dev\\Python27\\lib\\site-packages\\p
ytz-2013b-py2.7.egg', 'C:\\dev\\Python27\\lib\\site-packages\\python_dateutil-2.
1-py2.7.egg', 'C:\\dev\\Python27\\lib\\site-packages\\six-1.3.0-py2.7.egg', 'C:\
\dev\\Python27\\lib\\site-packages\\tornado-3.0.1-py2.7.egg', 'C:\\dev\\Python27
\\lib\\site-packages\\pyzmq-13.1.0-py2.7-win32.egg', 'C:\\dev\\Python27\\lib\\si
te-packages\\pygments-1.6-py2.7.egg', 'C:\\Windows\\system32\\python27.zip', 'C:
\\dev\\Python27\\DLLs', 'C:\\dev\\Python27\\lib', 'C:\\dev\\Python27\\lib\\plat-
win', 'C:\\dev\\Python27\\lib\\lib-tk', 'C:\\dev\\Python27', 'C:\\dev\\Python27\
\lib\\site-packages', 'C:\\dev\\Python27\\lib\\site-packages\\setuptools-0.6c11-
py2.7.egg-info']

因为我不能从 virtualenv 运行 python,所以我不能从那里打印 python 路径

【问题讨论】:

  • 你改变了你的python版本或平台吗?
  • 可以添加python > import sys > sys.path的打印输出吗?
  • 是的,新系统有更新版本的python(我认为,不确定)。将系统python sys.path添加到问题中
  • 这是你virtualenv下的sys.path吗?
  • @Udi 不,我无法直接从 virtualenv 中的 python 获取 sys 路径,因为我无法让 python 解释器在 env 中运行。但我会发布 PYTHONPATH

标签: python virtualenv virtualenv-commands


【解决方案1】:

更正 ENV_FOLDER\Lib\orig-prefix.txt 中的 python 目录路径对我有帮助

【讨论】:

  • 这是我从一台电脑移动到另一台电脑时遇到的问题
  • 也为我工作。我已将 Python (Anaconda) 重新安装到不同的目录中。
  • 也为我工作。谢谢!
【解决方案2】:

似乎您的系统和本地环境混合了来自不同版本的 python 的库和二进制文件。

您可能需要删除LibScriptsInclude,然后从virtualenv . 重新开始。您也许可以保存 site-packages 文件夹,但如果您有 requirements.txt 文件,您可能应该重新安装软件包(另请参阅:How do I install from a local cache with pip?)。

无论如何,我相信您可以创建一个脚本,一步完成所有这些操作。

【讨论】:

  • 嗯。我知道我可以重新安装 virtualenv,而且我确实有一个 pip freeze 的required.txt。但我对这个解决方案不满意。如果没有其他弹出,我将重新检查 repo,然后重新安装它
  • 你可以尝试从一个新的virtualenv复制LibScripts中的exe文件,但它是一样的:-)
  • 我怀疑复制会使情况变得更糟,目前我正在尝试您关于重新安装软件包的全新 virtualenv 的建议,请为我握住手指。
【解决方案3】:

我在 Windows 10 上同时安装了 py2 和 py3。直接使用 virtualenv xxx 创建 virtualenv 得到了这个错误。清除文件夹 xxx 并使用virtualenv -p TARGET_PY_EXE xxx 重新安装后,一切正常。 希望这将有助于多个 python windows 用户。 顺便说一句,我只是将环境变量创建为 PY2 和 PY3,而不是在 PATH 中添加绝对路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2012-02-01
    • 2018-01-06
    相关资源
    最近更新 更多