Python 代码移植到服务器以后 模块都要重新安装一遍?

2016-09-26 10:47:16 +08:00
 pyengwoei
本地 Pycharm 开发 用 PIP 安装了几十个模块以后,移植到服务器这些模块要重新安装吗
6000 次点击
所在节点    Python
30 条回复
congeec
2016-09-26 10:50:45 +08:00
需要,以后你还需要服务器代码的版本控制
用 virtualenv 或 docker 吧
pyengwoei
2016-09-26 10:52:45 +08:00
@congeec 好的谢谢了,因为我才接触 Python , 接受一个项目,但是这个项目以前是没有用 PIP 安装模块的,是直接通过: parent_dir = os.path.abspath(os.path.dirname(__file__))
vendor_dir = os.path.join(parent_dir, 'vendor') 这样把模块弄在工程目录一起的
ztyoung
2016-09-26 10:53:33 +08:00
需要。
可以开发的时候使用 virtualenv ,那样可以将模块一起移植过去。
araraloren
2016-09-26 10:53:45 +08:00
~~是迁移吧,移植不是这个意思
pyengwoei
2016-09-26 10:59:54 +08:00
@ztyoung 意思是把 site-packages 里面的模块文件 全部拷贝到另外一台服务器的对应目录?
felixonmars
2016-09-26 11:02:23 +08:00
@pyengwoei 有用到系统库等外部资源的话,除非所有环境的系统版本都一致,否则建议重建 virtualenv 。
pyengwoei
2016-09-26 11:06:52 +08:00
@felixonmars 只要是系统版本一样,就可以直接拷贝?
felixonmars
2016-09-26 11:07:51 +08:00
@pyengwoei 包括用到的包、包的来源。不能确定的话,从同一个模板用同样的步骤装包总是没错的……
pyengwoei
2016-09-26 11:12:13 +08:00
@felixonmars 我是把 site-packages 这个目录里面所有的文件打包出来的
bcllemon
2016-09-26 11:20:11 +08:00
可以用 pipreqs 生成依赖文件,到服务上使用 virtualenv 创建虚拟环境,然后使用 pip install -r requirements.txt 进行批量安装
pyengwoei
2016-09-26 11:22:03 +08:00
@bcllemon 这个看起来 不错
pyengwoei
2016-09-26 11:26:26 +08:00
@bcllemon 还有一个小白问题,直接用 PIP 安装模块,和去 site-packages 目录里面直接拷贝需要的模块到另外一个环境 应该不行吧
jy01264313
2016-09-26 12:03:28 +08:00
写一个 requirements 文件吧,直接 pip install -r requirements
bwangel
2016-09-26 12:20:52 +08:00
如果开发环境和服务器环境相同的话(例如我的都是 Ubuntu 16.04 ),那么本地使用 virtualenv , virtualenv 有一个--aloways-copy 选项,会把相关的C动态库什么的都复制过来,部署的时候直接把那个 virtualenv 复制上去就好了!

如果如果开发环境和服务器环境不同的话(例如Mac和 CentOS ),那么有两种办法:

1.本地先装好一个 Docker ,然后直接把 Docker 复制到服务器上去。(本地网络毕竟比服务器快,操作方便),或者写好 Docker file ,在服务器上 Build

2. 在本地通过 pip freeze 生成一个 requirements ,在服务器上装相关 pip 包
bwangel
2016-09-26 12:21:49 +08:00
对了, Pycharm 的项目设置里,可以设置 Python 解释器,如果使用 virtualenv 的话,记得设置上 virtualenv 中的 Python 。
xvx
2016-09-26 12:45:11 +08:00
我刚用 Pycharm ,这货好像就有类似 virtualenv 的功能吧,创建项目的时候可以选择的。
qweweretrt515
2016-09-26 13:49:38 +08:00
docker
aiver
2016-09-26 14:53:43 +08:00
pip freeze 生成 requirements 文件,然后服务器上 pip -r requirements 安装即可,但一般要大版本一致,如 2.7+版本或 3.3+版本;或, Docker 。
alphadog619
2016-09-26 14:58:12 +08:00
部署后 服务器会按照 requirements.txt 安装和开发环境一样版本的各个库
pyengwoei
2016-09-26 15:49:29 +08:00
@bwangel 这下基本明白了 TY

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/308966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX