jef*_*r13 22 python linux command-line install
如果我有一个基本的Python脚本,它的hashbang和什么不到位,那么从Linux上的终端我可以运行
/path/to/file/MyScript [args]
Run Code Online (Sandbox Code Playgroud)
无需通过解释器或任何文件扩展名执行,它将执行该程序.
所以我会安装这个脚本,以便我可以简单地输入
MyScript [args]
Run Code Online (Sandbox Code Playgroud)
系统中的任何地方都会运行?这可以为系统上的所有用户实现,还是必须为每个用户重做?我只是将脚本放在特定目录中,还是其他必要的东西?
agf*_*agf 22
放这样的东西最好的地方是/usr/local/bin.
这是放置自定义安装二进制文件的正常位置,应该在您的早期版本中PATH.
只需在那里复制脚本(可能使用sudo),它应该适用于任何用户.
Eri*_*ski 12
制作一个python脚本:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
Run Code Online (Sandbox Code Playgroud)
找出你的python在哪里:
which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
把这段代码放在那里:
#!/usr/bin/python
print "hi"
Run Code Online (Sandbox Code Playgroud)
在其中运行相同的目录:
python stuff.py
Run Code Online (Sandbox Code Playgroud)
上一个目录,它不可用:
cd ..
stuff.py
-bash: stuff.py: command not found
Run Code Online (Sandbox Code Playgroud)
未找到!正如我们所期望的那样,将python文件的文件路径添加到$ PATH
vi ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
添加文件:
export PATH=$PATH:/home/el/bin
Run Code Online (Sandbox Code Playgroud)
保存它,重新应用.bashrc,然后重试
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
再试一次:
cd /home/el
stuff.py
Run Code Online (Sandbox Code Playgroud)
打印:
hi
Run Code Online (Sandbox Code Playgroud)
诀窍是bash shell通过shebang知道文件的语言.
只需创建~/bin并放入export PATH=$PATH:$HOME/bin您的bashrc/profile.不要乱用系统,它会咬你,相信我.
更多的事情(与问题相关但不是答案的一部分):
export PATH=$HOME/bin:$PATH是不安全的,因为bash将查看您的~/bin文件夹中的可执行文件,如果它们的名称与原始文件中的其他可执行文件匹配,$PATH您会对意外/非工作命令执行感到惊讶. chmod+x保存脚本时不要忘记~/bin.~/bin文件夹中添加的内容,如果您只是在测试某些内容或处理未完成的脚本,最好使用./$SCRIPT_NAME CWD来执行脚本而不是将其放在下面~/bin.快速回答是symlink您的脚本到系统中包含的任何目录$PATH.
下面将通过一个示例来描述长答案(这是我通常所做的):
a)创建脚本,例如$HOME/Desktop/myscript.py:
#!/usr/bin/python
print("Hello Pythonista!")
Run Code Online (Sandbox Code Playgroud)
b)更改脚本文件的权限以使其可执行:
$ chmod +x myscript.py
c)将自定义目录添加到$PATH(请参阅下面的注释中的原因)以将其用于用户的脚本:
$ export PATH="$PATH:$HOME/bin"
d)创建脚本的符号链接,如下所示:
$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
请注意hello(可以是任何内容)是您将用于调用脚本的命令的名称.
注意:
i)使用$HOME/bin而不是使用的原因/usr/local/bin是将本地脚本与其他用户(如果您愿意)和其他已安装的东西分开.
ii)要创建符号链接,您应该使用完整的正确路径,即
$HOME/bin好 ~/bin不好!
这是一个完整的例子:
$ pwd
~/Desktop
$ cat > myscript.py << EOF
> #!/usr/bin/python
> print("Hello Pythonista!")
> EOF
$ export PATH="$PATH:$HOME/bin"
$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
$ chmod +x myscript.py
$ hello
Hello Pythonista!
Run Code Online (Sandbox Code Playgroud)
小智 6
只需在 /usr/local/bin/ 中创建指向脚本的符号链接:
sudo ln -s /path/to/your/script.py /usr/local/bin/script
Run Code Online (Sandbox Code Playgroud)
将脚本放在 PATH 中的某个位置(如/usr/local/bin)是一个很好的解决方案,但这会强制系统的所有用户使用/查看您的脚本。
添加别名/etc/profile可能是一种执行您想要的操作的方法,允许您的系统用户使用该unalias命令撤消此操作。要添加的行是:
alias MyScript=/path/to/file/MyScript
Run Code Online (Sandbox Code Playgroud)
你也可以使用setuptools(https://pypi.org/project/setuptools/)
def hi():
print("hi")
Run Code Online (Sandbox Code Playgroud)
(假设文件名为hello.py)
还要__init__.py在脚本旁边添加文件(没有任何内容)。
添加setup.py脚本,内容如下:
#!/usr/bin/env python3
import setuptools
install_requires = [
'WHATEVER PACKAGES YOU NEED GOES HERE'
]
setuptools.setup(
name="some_utils",
version="1.1",
packages=setuptools.find_packages(),
install_requires=install_requires,
entry_points={
'console_scripts': [
'cool_script = hello:hi',
],
},
include_package_data=True,
)
Run Code Online (Sandbox Code Playgroud)
python setup.py develop在此文件夹中运行cool_script,您的脚本将运行。| 归档时间: |
|
| 查看次数: |
35104 次 |
| 最近记录: |