Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安装不同版本的python软件包并通过shell命令访问?_Python - Fatal编程技术网

安装不同版本的python软件包并通过shell命令访问?

安装不同版本的python软件包并通过shell命令访问?,python,Python,我们正在使用Python脚本使用不同的工具箱或库(如GDAL等)处理卫星图像。我们现在遇到的问题是,我们使用的一些第三方Python应用程序(在我们没有影响力的情况下)需要这些Python包的不同版本(例如,Sentinel2 SEN2COR大气校正需要GDAL 1.x,我们还希望使用GDAL 2.x来修改JPEG2000文件) 最好的方法是什么?我更喜欢一种方式,即我可以有相同python版本的多个安装(例如2.7,但这并不重要),并分别为每个安装包和版本。这样,我就可以确保SEN2COR脚本

我们正在使用Python脚本使用不同的工具箱或库(如GDAL等)处理卫星图像。我们现在遇到的问题是,我们使用的一些第三方Python应用程序(在我们没有影响力的情况下)需要这些Python包的不同版本(例如,Sentinel2 SEN2COR大气校正需要GDAL 1.x,我们还希望使用GDAL 2.x来修改JPEG2000文件)

最好的方法是什么?我更喜欢一种方式,即我可以有相同python版本的多个安装(例如2.7,但这并不重要),并分别为每个安装包和版本。这样,我就可以确保SEN2COR脚本在他自己的python安装中运行,在那里我安装了所需的包,并且不再接触它,然后在另一个python安装中使用我的其他脚本

我认为像virtualenv这样的东西是完美的,但有一点很重要:我们所有的脚本都是命令行脚本,并且都是从各种来源开始的,比如MATLAB脚本、R脚本,有时甚至是cron作业。在virtualenv中是否有一种方法可以从shell或其他程序内部执行类似于
/usr/bin/python-version-only-for-sen2cor process\u data.py参数
/location/of/other/python version reload\u table.py
的操作?我们的设置最好的方式是什么?我可能只需要多次安装python,并且在安装包时总是修改环境变量以使用不同的python版本,但我想这很容易出错。有什么建议吗?

你可以看看或

我最近刚用了pythonbrew。我只是用bash脚本运行我的程序(以避免键入整个路径):


如果将启动程序指向该虚拟环境中Python可执行文件的完整路径(例如,
/home/me/.virtualenvs/sen2cor/bin/Python
),则Python可执行文件将自动对安装在
/home/me/.virtualenvs/sen2cor/lib/pythonx.y/site packages
中的包进行优先级排序。无需设置PYTHONPATH,只需指向正确的可执行文件即可。这通常是使用Python的web项目在Apache中运行的方式(至少,这是我的主要经验)。
#!/bin/bash
~/.pythonbrew/pythons/Python-2.7.7/bin/python my_program.py