2017-10-05 6 views
0

私はpipを使ってpythonスクリプトを使ってモジュールをインストールしようとしています。ここにはscript.pyの内容があります:pythonのpipインストールは、スクリプトでは妙に動作しますが、pythonプロンプトではうまく動作しないのはなぜですか?

#/usr/bin/python2.7 
# I'm the file called `script.py` 

import sys, importlib, pip 
print(sys.version); print(sys.path) # For debugging 
try: 
    importlib.import_module('docopt') 
except ImportError: 
    pip.main(['install', '-U', 'docopt']) 
finally: 
    globals()[pack] = importlib.import_module('docopt') 

このスクリプトを実行します。 python2.7 script.pyを使用すると、私を与える:

$ python2.7 script.py 
2.7.9 (default, Oct 3 2016, 17:42:24) 
[GCC 4.3.2 20081105 (Red Hat 4.3.2-7)] 
['/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages'] 
No module named docopt 
Downloading/unpacking docopt 
    Cannot fetch index base URL https://pypi.python.org/simple/ 
    Could not find any downloads that satisfy the requirement docopt 
Cleaning up... 
No distributions at all found for docopt 
Storing debug log for failure in /root/.pip/pip.log 
Traceback (most recent call last): 
    [...] 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named docopt 

のでインターネット接続/ SSLか何かの輸送関連の問題を。繰り返しますが、私をweirds事はそれこと、である

$ python2.7 
Python 2.7.9 (default, Oct 3 2016, 17:42:24) 
[GCC 4.3.2 20081105 (Red Hat 4.3.2-7)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pip, sys 
>>> print(sys.path) 
['/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages'] 
>>> pip.main(['install', '-U', 'docopt']) 
Downloading/unpacking docopt 
    Downloading docopt-0.6.2.tar.gz 
    Running setup.py (path:/tmp/pip_build_root/docopt/setup.py) egg_info for package docopt 

Installing collected packages: docopt 
    Running setup.py install for docopt 

Successfully installed docopt 
Cleaning up... 
0 

:しかし、tを彼と同じコマンドが、私は手で入力してPythonの対話インタプリタ、(コピー&が貼り付け)に完全に正常に動作します対話的に働くつまりシェルでpython2.7を実行してから、同じコードを手で入力します。ただし、のスクリプトファイルをpython2.7 script.pyと実行しているときは表示されません。したがって、あるマシンでは、同じインタプリタがインターネットにアクセスできます。

トラブルシューティングのアイディアが不足しています。私は上記の結果を得るために同じマシンとユーザーを使用しました。 Pythonスタートアップファイルがないので、コマンドを魔法のように対話的に動作させるわけではありません。どちらの場合もsys.pathの内容は同じです。私はプロキシの背後にいるわけではありません。スクリプトに欠けている可能性のあるアイデアはありますか?

答えて

0

https://pypi.python.org/simple/

が何らかの理由であなたのPythonインタプリタは、インターネットにアクセスできないことを示す指標のベースURLを取得することはできません。それには多くの理由があります。 HTTPプロキシを使用していますか?

+0

いいえ、プロキシを使用していません。変わったことは、インタプリタから、つまりシェルで 'python2.7'を実行して、手で同じコードを入力することです。しかし、私が 'python2.7 script.py'をしたときではありません。したがって、あるマシンでは、同じインタプリタがインターネットにアクセスできます。 – JCGB

+0

完全に盲目的な推測:あなたはSELinuxを有効にしていますか? – Guillaume

+0

それを聞いたことがないので、私は推測しません。 '$ sestatus bash:sestatus:command not found' – JCGB

関連する問題