web-dev-qa-db-ja.com

./xx.py:行1:import:コマンドが見つかりません

私はこれを使用しようとしています Python urllib2 Basic Auth Problem 認証を必要とするURLからWebページコンテンツをダウンロードするためのコードのビット。私が試しているコードは次のとおりです。

 import urllib2, base64

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)

それは私を見せています:

./xx.py: line 1: import: command not found
./xx.py: line 3: syntax error near unexpected token `('
./xx.py: line 3: `request = urllib2.Request("http://api.foursquare.com/v1/user")'

何が間違っているのだろうか?使っています Python 2.7.5。認証が必要なURLからファイルコンテンツをダウンロードするにはどうすればよいですか?

18
user2481422

最初のステップでの認証に関連する問題ではありません。 importが機能していません。だから、最初の行にこれを書いてみてください:

#!/usr/bin/python

を使用して実行されている時間

python xx.py

あなたのためにここに一つの説明があります:

>>> abc = "Hei Buddy"
>>> print "%s" %abc
Hei Buddy
>>> 

>>> print "%s" %xyz

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    print "%s" %xyz
NameError: name 'xyz' is not defined

最初に、abc変数を初期化し、正常に動作します。一方、xyzは初期化されていないため機能しません!

47
Sharif Mamun

LinuxなどのUNIXベースのOSを使用していますか?その場合、スクリプトの一番上にShebang行を追加します。

#!/usr/bin/python

その下に残りのコード(xx.pyあなたの場合)既に持っていること。次に、ターミナルで同じコマンドを実行します。

$ python xx.py

これは、これをPythonコードとして解釈しているため、正常に動作します。ただし、ターミナルから実行する場合、pythonがここでそれを解釈する方法を指示するので問題ありません。 doは、ターミナルの外で実行します。つまり、ファイルブラウザから実行します。

9
Alex Thornton

最初のインポートで「import:command not found」と表示される場合、パーサーがpyファイルに一致する文字エンコードを使用していないことが原因です。特に、pyファイルでASCII encodingを使用していない場合。

それを正しくする方法は、pyファイルの上に正しいエンコーディングを指定して、ファイルの文字エンコーディングに一致させることです。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
4
Li Li

私は同じ問題を経験しましたが、今この問題の解決策を見つけました。

#!/usr/bin/python

import sys
import os

os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5]))

これは私の場合のコード[1]です。このスクリプトを試したときに、次のようなエラーメッセージが表示されました。

import:コマンドが見つかりません

私は人々がシバンについて話しているのを見つけました。ご覧のとおり、上記のコードpythonにShebangがあります。これらのトライアルを試してみましたが、良い解決策は見つかりませんでした。

私はついに自分のシェバンをタイプしようとしました。

#!/usr/bin/python

コピーしたものを削除しました。

そして、私の問題は解決しました!!!

インターネットからコードをコピーしました[1]。

そして、私は、元のコピーされたシバン文にいくつかの見えない(?)見えない特殊文字があったと思います。

私はvimを使用していますが、時々同様の問題が発生します。特にインターネットからコードスニペットをコピーすると、この種の問題が発生します。Webページにはウイルスの特殊文字が含まれています!!私は疑う。 :-)

トレッカー

PS)Windows 7のコード(ホストOS)をWindowsクリップボードにコピーし、Ubuntuのvim(ゲストOS)に貼り付けました。 VMはOracle Virtual Machineです。

[1] http://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy

1
Jeonghum

./xx.pyなどのスクリプトを直接実行し、スクリプトの最上部に#!/usr/bin/env pythonなどのシバンがない場合、シェルはシェルスクリプトとして実行できます。 POSIXによる

POSIX.1-2008のSystem Interfacesボリュームで定義されている[ENOEXEC]エラーと同等のエラーが原因でexecl()関数が失敗した場合、シェルは、検索の結果のパス名でシェルを呼び出すのと同等のコマンドを実行します最初のオペランドとして、残りの引数は新しいシェルに渡されますが、新しいシェルの「$ 0」の値がコマンド名に設定される場合があります。実行可能ファイルがテキストファイルでない場合、シェルはこのコマンドの実行をバイパスできます。この場合、エラーメッセージを書き込み、126の終了ステータスを返します。

注:テキストファイルにShebangがない場合、ENOEXECが表示される場合があります。

Shebangがないと、シェルはPythonスクリプトをエラーにつながるシェルスクリプトとして実行しようとします:import: command not found

また、スクリプトをpython xx.pyとして実行する場合、Shebangは必要ありません。実行可能にする必要さえありません(+x)。この場合、スクリプトはpythonによって解釈されます。

Windowsでは、 pylauncherがインストールされている でない限り、Shebangは使用されません。 Python 3.3 + に含まれています。

1
jfs

シェバン について

#!usr/bin/python

これにより、ファイルに記述されたコードを実行するために起動するインタープリターがわかります。

1
SJ26