https://www.jianshu.com/p/8b5536f1ea35
https://www.cnblogs.com/freely/p/8022923.html
一、安装 virtualenv,两个注意点:
a)要在管理员权限下安装(sudo),
b)不要安装在cond环境,在linux、mac系统最好安装在"/usr/local/bin/"路径下,使用系统自带的python2安装,默认安装在此路径
# 安装 virtualenv,
$ sudo pip install virtualenv
二、使用示例,目标是将udf_main.py及其依赖(包括外部包依赖、工程内部资源源码依赖)创建一个虚拟环境,并且运行
目标:在虚拟环境运行udf_main.py ,udf_main.py 依赖多个外部包、以及依赖工程中的utils、conf、data等包
1、在工程目录下 创建test: mkdir test,创建test目录仅为了测试
2、将文件udf_main.py 和目录utils移动到test中,目的是验证解决udf_main.py依赖utils资源包的问题. cp -r ../utils .
3、创建虚拟环境 virtualenv udf_library_test
4、添加基础依赖(主要是Python、pip等):source udf_library_test/bin/activate
5、在虚拟环境安装所需要的外部依赖,如pandas :
pip install jieba
pip install coloredlogs
pip install pyaml
pip install toml
6、退出虚拟环境 deactivate
7、虚拟环境目录udf_library_test添加 __init__.py 文件: touch __init__.py ,并将依赖包utils、conf、data等添加到udf_library_test目录:
cp -r utils udf_library_test/.
cp -r conf udf_library_test/.
cp -r data udf_library_test/.
cp -r model udf_library_test/.
cp -r output udf_library_test/.
特别注意,对udf_main.py文件需要修改导入util、conf、data等包的路径,比如udf_main.py原来导入utils的路径是
from utils.logger import *
修改修改为
from udf_library_test.utils.logger import *
8、在test目录下,测试效果:
echo ‘这是输入参数’|./udf_library_test/bin/python udf_main.py
如果运行正常,说明成功,可以在udf_library_test目录下将其打包,该打包就包含了所有的依赖,可以在任意环境执行