次のようなプログラムがあります:
#!/usr/local/bin/python3
print("Hello")
ターミナル経由で実行するtest.py
と次のようになります:
Traceback (most recent call last):
File "/usr/lib/python3.3/site.py", line 629, in <module>
main()
File "/usr/lib/python3.3/site.py", line 614, in main
known_paths = addusersitepackages(known_paths)
File "/usr/lib/python3.3/site.py", line 284, in addusersitepackages
user_site = getusersitepackages()
File "/usr/lib/python3.3/site.py", line 260, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/lib/python3.3/site.py", line 250, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/lib/python3.3/sysconfig.py", line 610, in get_config_var
return get_config_vars().get(name)
File "/usr/lib/python3.3/sysconfig.py", line 560, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/usr/lib/python3.3/sysconfig.py", line 432, in _init_posix
from _sysconfigdata import build_time_vars
File "/usr/lib/python3.3/_sysconfigdata.py", line 6, in <module>
from _sysconfigdata_m import *
ImportError: No module named '_sysconfigdata_m'
python3 test.py
代わりにit worksと入力すると、次のようになります:
Hello
追伸which python3
---->/usr/local/bin/python3
ベストアンサー1
一般的に、いくつかの落とし穴に注意してください:
をセットする実行フラグスクリプトについて:
chmod u+x test.py
試してみる前にドットを付けて実行する「./」を呼び出すと、
./test.py
他のスクリプトが実行される可能性があるので、PATH
また、必ずWindowsの行末がありませんこれもシェバン評価を防ぐようです。いくつか提案があります。例えばこの回答ではフォーマットの変換方法については、こちらをご覧ください。
動作する場合は
python3 test.py
、おそらく Windows の行末に問題があります。#!/usr/bin/env python3
Pythonバイナリがどこか別の場所にインストールされている可能性があるため、これはシェバンを定義する最良の方法です(つまり、これをスクリプトの最初の行として使用します)。環境env
を調べてPATH
バイナリを見つけます。@ShaileshKumarMPatel がコメントで指摘しているように、行頭に間違いがないことを確認してください (色文字など)
編集: OP のようなエラーは、私には Windows の改行コードのように見えます。私も同じエラーを経験しましたが、出力は異なります。