以python3.6为例
①安装virtualenv:
#pip安装之后在D:\Python36\Scripts目录下可以看到多了一个virtualenv.exe可执行文件
pip install virtualenv
②创建一个虚拟环境:
# venvname为虚拟环境名,会在当前目录下创建一个虚拟环境
virtualenv [venvname]
ps:当系统存在多个python版本时,直接执行这个命令会使用系统默认的python版本创建虚拟环境(windows下系统环境变量path中最靠前的python为默认版本),要指定python版本有以下2种方法:
1.virtualenv -p指定python解释器
#windows下路径为python解释器的完整路径,mac下路径为python安装目录路径(执行virtuaenv命令即可查看各命令选项),如下为windows示例
virtualenv -p D:\Python36\python.exe test1
2.将D:\Python27\Scripts\目录下的virtualenv.exe更改名称,比如加上版本号区分:virtualenv2.exe
③启动&退出虚拟环境:
# 启动虚拟环境时需要先切换到虚拟环境的Scripts目录下再执行如下命令。
activate
#退出虚拟环境
deactivate
ps:mac下这个命令为source venv/bin/activate
以上虚拟环境的安装和创建就ok了,每次激活后就可以正常使用,接下来是虚拟环境在无网环境下的移植(切记,A和B 2个服务器上的python版本一定要一致!!!不仅是版本号,还有64bit或者32bit这些)
A----->B(将A机器上的虚拟环境在无网情况下移植到B)
A机器上已有虚拟环境:
① 生成安装包列表文件:
ps:这个命令在非虚拟环境也可以使用,可以生成pip list获取的所有(除去python自带的)包列表
# 安装包列表保存到文件packages.txt中,文件名是自己定义,如果文件已经存在会被覆盖更新,不存在会自动创建
#需要在虚拟环境目录下执行这个命令(无需activate激活),否则生成的文件内容是系统python版本使用的安装包列表
pip freeze >packages.txt
② 将包列表文件中的所有包下载到文件夹下:
#savetest\whls为保存安装包的路径,不存在会被创建,packages.txt为前一步生成的包列表文件
pip download -d [savetest\whls] -r [packages.txt]
B机器上有没有虚拟环境都可以
无虚拟环境直接在python环境下做以下操作
有虚拟环境则在虚拟环境下做以下操作,
③ 将①和②中生成的包列表文件和安装包文件夹复制到B机器上
④ 依据包列表文件以及安装包文件夹来安装包:
#savetest\whls为安装包文件夹路径,packages.txt为包文件列表(注意相对路径和绝对路径的选择)
pip install --no-index --find-links=[savetest\whls] -r [packages.txt]
ps:如果是在有网络的情况下要移植环境,pip install -r [packages.txt] 即可
常见问题:
1.一段时间不使用虚拟环境,在使用时报错了,解决如下
2.今天迁移到无法访问外网的环境折腾了一天,各种报错,下载pip和setuptools的wheel失败什么的,就算忽略这2个的安装,在读文件安装包的时候也会报错说找不到该包,最后发现是本地的python是32bit的,新环境装的是64bit的!!!!!具体问题如下:
①如果是迁移到虚拟环境出现了以下问题
解决方案:
如果需要pip和setuptools这些工具,可以在虚拟环境下手工安装
②提示文档中的包,在包文件夹下找不到,但是检查是有的。后来发现是因为本地是python3.6.5-32bit,但是要迁移的目标服务器是python3.6.5-64bit,,后来重装了python就好了
https://www.cnblogs.com/yy-cola/p/9764822.html
linux下也相似,参考:
https://www.cnblogs.com/wt11/p/6216508.html