Python3没有这个文件或目录。

12
我想制作可执行的Python3脚本并从Shell中运行它们。我已经在系统上安装了Python 3.4.0。 因此,我将'/home/spandan/python_codes'目录添加到PYTHONPATH中,因为我计划将我的脚本和模块放在这里。
然而,在尝试执行这些脚本时,系统会抛出上述错误,除非我进入python_codes目录并执行它们,否则脚本将无法执行。 执行Python程序:我发现制作脚本时PYTHONPATH是无关紧要的,还学习到如何设置Python shebang。所以我把我的设置成了#!/usr/bin/env python3.4.0
这样做正确吗?

如果您正在使用客户端编辑脚本,请注意此行的CRLF,这是一个微不足道的问题,它有时能正常工作,有时又不能。 - mckenzm
2个回答

19

你不需要将Python代码放在全局路径中,只需将Python 3.4解释器在全局范围内可用即可。为此,请编辑位于您的主目录中的.bash_profile或.bashrc文件,并添加以下行:

export PATH=${PATH}:/usr/bin/python3

这将使python3在无论你的当前工作目录为何时都可以执行。 为了从你的代码目录执行代码,你只需要输入:

$ python3 ./your_code.py

另一种方法是在你的代码顶部添加shebang:

#/usr/bin/python3

然后更改当前用户对其的可执行权限(默认情况下,它没有执行权限)。

$ chmod 744 your_code.py

然后直接执行脚本:

$ your_code.py

我希望我解决了您的问题。


1
不行啊……还是显示同样的错误。Python3 解释器/可执行文件无法看到我保存代码的位置,除非我进入该文件夹。 - Spandan Chatterjee
@SpandanChatterjee 你需要进入你的代码文件夹才能执行你的代码。我不明白为什么你想要在全局范围内执行你的代码。如果你想让你的某个脚本作为全局二进制代码运行,那么你需要将该代码文件复制并粘贴到全局目录中(执行 echo $PATH 命令以查看全局目录列表)。或者,更好的方法是在你的主文件夹中创建一个本地 bin 文件夹,将其设置为全局 (export PATH=${PATH}:/home/your_username/bin) 并将你的代码存储在那里。 - Marty

0
另一种方法是使用python-is-python2python-is-python3debian软件包并在/usr/bin/env python sheabang中使用。
这个选项将允许最终用户选择他想要使用的解释器,同时保持您的代码版本无关,并避免一些人安装不需要的解释器版本。
例如,运行以下命令以创建一个示例文件:
cat << EOF > version.py && chmod +x version.py
#!/usr/bin/env python
import sys
print(sys.version)
EOF

如果你想将python2设置为默认版本,请运行以下命令:

sudo apt install python-is-python2

如果您想将Python3设置为默认版本,请运行以下命令:

sudo apt install python-is-python3

最后,您可以通过运行以下命令来查看您选择的Python解释器版本:

./version.py

这种解决方案唯一的缺点是,你可以使你的Python脚本在不同版本的Python解释器中兼容,但这是你的决定!
你可以安装任何你想要的版本,并随时从Python2切换到Python3或者反之,但是这个想法是在系统中固定一个Python解释器版本,除非进行最终升级,否则不再更改。

References:
https://askubuntu.com/questions/1296790/python-is-python3-package-in-ubuntu-20-04-what-is-it-and-what-does-it-actually


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接