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

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

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

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

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

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

https://study.congcong.us/t/308966

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

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

© 2021 V2EX