0

我们在远程位置安装了多个 Python 版本。/ remote/Python-2.7/bin/pythonor /remote/Python-2.7.2-shared/linux32/bin/pythonetc……在代码中,我们使用/remote/Python-2.7-shared。我需要使用安装在 Python-2.7 中的模块(如 numpy、matplotlib)但不是共享位置。在代码中,我们开始 Python 代码,如

#! /usr/bin/env py

是否可以从不同的 Python 版本导入模块。?

一个建议,我从谷歌搜索得到。我们可以在代码的第一行更改 python 路径。

#! /remote/Python-2.7/bin py

但它也没有一些安装在共享和代码中的包。我可以输入来解决这个问题吗?

我不明白 IT 人员安装多个版本的 Python 的原因是什么。我也可以提出票,这需要大量批准在共享位置安装相同的包(或者简而言之,没有安装包的票)

笔记。我已经尝试了所有选项,但似乎没有任何效果。也许我做错了。 如何在给定完整路径的情况下导入模块?

任何输入都会对我有很大帮助。

我尝试了以下建议,但最终出现以下错误。sys.path.inser(0,"path_location")

Traceback (most recent call last):
    import numpy
  File "/remote/Python-2.7.2/lib/python2.7/site-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/remote/Python-2.7.2/lib/python2.7/site-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/remote/Python-2.7.2/lib/python2.7/site-packages/numpy/lib/__init__.py", line 4, in <module>
    from type_check import *
  File "/remote/Python-2.7.2/lib/python2.7/site-packages/numpy/lib/type_check.py", line 8, in <module>
    import numpy.core.numeric as _nx
  File "/remote/Python-2.7.2/lib/python2.7/site-packages/numpy/core/__init__.py", line 5, in <module>
    import multiarray
ImportError: /remote/Python-2.7.2/lib/python2.7/site-packages/numpy/core/multiarray.so: cannot open shared object file: No such file or directory
4

2 回答 2

3

“shebang”行是脚本告诉 *nix-ish 操作系统使用哪个脚本可执行文件来运行脚本的机会。如果您希望指定 Python 解释器的特定安装版本,这将是在您的情况下执行此操作的好方法。

如果您希望在默认路径/PYTHONPATH 之外导入模块,您可以选择两个选项:

  • 修改您的 PYTHONPATH 环境变量
  • 在您的脚本中,导入 sys 并修改您的路径,如下所示:

    import sys  
    sys.path.insert(0, "path_to_module")  
    

这会在脚本运行期间自定义脚本的路径,并允许任何后续imports 找到目标文件。

virtualenvs 是首选选项。但有时它只是为了完成任务。

于 2013-10-17T16:56:46.630 回答
2

看起来你真正需要的是Virtual Envs(虚拟环境)。它们是在同一台机器上安装多个 Python 的事实上的方式。

我建议您阅读有关 SheBang 的 Wikipedia 文章。它将帮助您了解正在发生的事情。

您的第一行(SheBang)应该是您要执行的解释器的可执行文件。使用具有您要安装的库的那个。不要让感叹号和命令之间有任何空格。

尝试:

#!/remote/Python-2.7.2-shared/linux32/bin/python

或者

#!/remote/Python-2.7/bin/python

您应该能够在 shell 中运行您想要使用的解释器,然后导入您想要使用的模块:

$ /remote/Python-2.7/bin/python
Python 2.7.3 (default, Dec 18 2012, 13:50:09)
[GCC 4.5.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>

如果您无法在远程计算机的控制台中运行这些命令,您应该更改您正在使用的解释器。不要使用 #!/bin/env python,因为它将使用您的用户环境路径来决定使用哪个 python。您将很难发现正在发生的事情。直接使用您要运行的解释器。

为简单起见,请勿使用 #!

于 2013-10-17T02:36:10.470 回答