Shebangはpython3では動作しません 質問する

Shebangはpython3では動作しません 質問する

次のようなプログラムがあります:

#!/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

一般的に、いくつかの落とし穴に注意してください:

  1. をセットする実行フラグスクリプトについて:chmod u+x test.py

  2. 試してみる前にドットを付けて実行する「./」を呼び出すと、./test.py他のスクリプトが実行される可能性があるので、PATH

  3. また、必ずWindowsの行末がありませんこれもシェバン評価を防ぐようです。いくつか提案があります。例えばこの回答ではフォーマットの変換方法については、こちらをご覧ください。

    動作する場合はpython3 test.py、おそらく Windows の行末に問題があります。

  4. #!/usr/bin/env python3Pythonバイナリがどこか別の場所にインストールされている可能性があるため、これはシェバンを定義する最良の方法です(つまり、これをスクリプトの最初の行として使用します)。環境envを調べてPATHバイナリを見つけます。

  5. @ShaileshKumarMPatel がコメントで指摘しているように、行頭に間違いがないことを確認してください (色文字など)

編集: OP のようなエラーは、私には Windows の改行コードのように見えます。私も同じエラーを経験しましたが、出力は異なります。

おすすめ記事