Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 Can';除非I';我正在使用一个交互式shell_Python_Cx Oracle - Fatal编程技术网

Python Can';除非I';我正在使用一个交互式shell

Python Can';除非I';我正在使用一个交互式shell,python,cx-oracle,Python,Cx Oracle,在交互式shell上使用Python时,我能够毫无问题地导入cx_Oracle文件。例: me@server~/ $ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>>

在交互式shell上使用Python时,我能够毫无问题地导入cx_Oracle文件。例:

me@server~/ $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> 
如您所见,导入工作没有任何障碍。但是,当我尝试运行Python脚本执行相同的操作时,我得到一个错误:

me@server~/ $ sudo script.py
Traceback (most recent call last):
   File "/usr/local/bin/script.py", line 19, in <module>
      import cx_Oracle
ImportError: No module named "cx_Oracle'
我在这里感到困惑。其他相关信息是我运行的服务器是Ubuntu 14.04.1 LTS(从12.04升级)64位
whichpython
sudo which python
都指向相同的位置。同样,通过
sudosu-
以root用户身份执行此操作也会得到相同的结果;从interactive导入OK,但从脚本导入错误


在这段时间内,除了操作系统升级之外,什么都没有发生。

sudo启动了一个新的bash环境,然后指向一个不同的python可执行文件(不同的安装模块)

您可以使用
which python
sudo which python

编辑:因此,如果它们指向同一个可执行文件,那么您应该查看sys.path以查找差异。在这两种环境中,您都可以:

python -c "import sys; print('\n'.join(sys.path))"
sudo python -c "import sys; print('\n'.join(sys.path))"
寻找差异。如果没有:

在这种导入情况下,一个常见的错误是python将首先查看本地目录。因此,如果您碰巧正在运行python并导入在本地找到的内容(例如,cx_Oracle是您当前位置的子目录),那么如果更改目录,您将收到一个导入错误


最后一点注意:这里我假设script.py的shbang指向与
哪个python
相同的可执行文件。也就是说,
pythonscript.py
script.py
返回相同的错误。

对不起,所有的。这对我来说是个愚蠢的决定。事实证明,所讨论的脚本使用的是Python3,当服务器升级时,Python3从3.2版本变成了3.4版本

在3.4版本中设置cx_Oracle模块后,一切都按预期运行

菲尔,你最后一句话是关于舍邦的,正是这句话让我发现了这一点,你真是太好了!我之所以没有把你的回答记为答案,是因为从技术上讲,这并不是答案,而是引导我走上了正确的道路


干杯

菲尔,谢谢你
whichpython
sudowhichpython
都指向同一个可执行文件。我会用这些信息修改我的帖子。将来,如果有人在对你的错误给出了多个建议后(免费)引导你找到解决方案,请向上投票,并在“谢谢”评论或原始问题中发布解决方案。不是在你自己的答案中,这不会给问题带来进一步的见解。提示:你的第一个被接受的答案(我想不是你自己的答案)会得到一枚徽章。菲尔,我试着投你的赞成票,但缺乏声誉。现在更便宜了,谢谢我只能做系统允许的事,没有侮辱的意思。好吧。
python -c "import sys; print('\n'.join(sys.path))"
sudo python -c "import sys; print('\n'.join(sys.path))"