我virtualenv
位于/home/user/virtualenvs/Environment
。现在我需要在另一台PC上使用这个环境。所以我安装了virtualenv-clone
并用它来克隆/Environment
。然后我通过USB将其复制到另一台PC。我可以使用source activate
激活它,但是当我尝试使用sudo ./Environment/bin/python
启动python解释器时,我得到了
./bin/python: 1: ./bin/python: Syntax Error: "(" unexpected
没有sudo执行它会给我一个错误,告诉我二进制格式有错误。
但这怎么可能呢?我刚刚复制了它。或者有更好的方法吗?我不能只使用pip freeze
,因为/Environment/lib/python2.7/site-packages/
中有一些我自己编写的软件包,我也需要复制它们。据我了解,pip freeze
只创建一个包列表,然后下载并安装。
答案 0 :(得分:14)
在源计算机上执行以下步骤
在其他电脑上
你应该完成!
similar question How to Copy/Clone a Virtual Environment from Server to Local Machine
答案 1 :(得分:1)
我认为发生的事情是您只需将源文件中的符号链接作为二进制文件(不再链接)复制到目标计算机。您应该使用rsync -l
复制它以复制以保留这些链接。
答案 2 :(得分:1)
我分享我的经验。
Suppose another PC does not install Python
Python version: 3.7.3
Platform: Platform: Windows 10, 7 (64bit)
以下内容对我有用。
步骤:
embeddable zip file
不提供点子)文件夹关节:
- main.nsi
- InstallData
- contains: Step1 & Step2
- YourSitePackages # I mean that packages you do not intend to publish to PyPI.
- LICENSE
- MANIFEST.in
- README.rst
- ...
- requirements.txt
- setup.py
main.nsi的缩写内容如下:
!define InstallDirPath "$PROGRAMFILES\ENV_PYTHON37_X64"
!define EnvScriptsPath "${InstallDirPath}\Scripts"
...
CreateDirectory "${InstallDirPath}" # Make sure the directory exists before the writing of Uninstaller. Otherwise, it may not write correctly!
SetOutPath "${InstallDirPath}"
SetOverwrite on
File /nonfatal /r "InstallData\*.*"
SetOutPath "${InstallDirPath}\temp"
SetOverwrite on
File /nonfatal /r "YourSitePackages\*.*"
nsExec::ExecToStack '"${InstallDirPath}\python.exe" "${InstallDirPath}\get-pip.py"' # install pip
nsExec::ExecToStack '"${InstallDirPath}\Scripts\pip.exe" install "${InstallDirPath}\temp\."' # install you library. same as: `pip install .`
RMDir /r "${InstallDirPath}\temp" # remove source folder.
...
/*
Push ${EnvScriptsPath} # Be Careful about the length of the HKLM.Path. it is recommended to write it to the HKCU.Path, it is difficult for the user path to exceed the length limit
Call AddToPath # https://nsis.sourceforge.io/Path_Manipulation
*/
希望有人将从中受益。
答案 3 :(得分:0)
通常,我使用virtualenv创建一个新环境,然后转到要从中复制的环境,复制所有文件夹并将其粘贴到我刚刚创建的环境文件夹中,但最重要的是在询问是否要替换目标文件,选择跳过这些文件。这样,您可以保留设置。 至少对我来说,这非常有效。 我希望它也对您有用。