在 MacOS 上使用 pip install 命令创建可执行文件
Posted
技术标签:
【中文标题】在 MacOS 上使用 pip install 命令创建可执行文件【英文标题】:Creating executable file with pip install command on MacOS 【发布时间】:2022-01-04 00:03:36 【问题描述】:我既是新来的,又是 MacOS 和编码的新手。 我知道在 Windows 中我可以创建 bash 文件以在 cmd 中有一个可执行命令。我研究并发现我可以在 MacOS(shell 文件)中使用类似的文件,但我很难理解如何制作一个。我尝试了不同的路线:
首先,我尝试使用以下代码在 txt 编辑器中创建文件:
#!/bin/bash
pip3 install pgzero
echo Installing Pygame Zero
稍后在终端中使用“chmod 700 文件名”。它没有工作
然后我尝试使用 Apple Scrip,代码如下:
tell application "Terminal"
activate
do script "pip3 install pgzero"
do script "echo Installing Pygame Zero"
end tell
它有点工作,但它不是可执行文件
然后我尝试了在谷歌上找到的另一种方法:
echo '#!/bin/bash
pip3 install pgzero
echo Installing PyGame Zero'> ~/Desktop/PygameInstaller.command
chmod 740> ~/Desktop/PygameInstaller.command
它仍然没有工作 D: 有人可以提供一点帮助吗?我开始感到迷茫q,q 提前谢谢!
【问题讨论】:
【参考方案1】:就你想要的 shell 脚本而言,你的第一次尝试可能接近你想要的,但 echo
应该在 pip3
命令之前。我想如果你把动词从Installing
改成Installed
,那么你可以把它留在原处。
$ cat <<EOF > ~/Desktop/PygameInstaller.command
#!/bin/bash
echo Installing Pygame Zero
pip3 install pgzero
EOF
$ chmod 700 ~/Desktop/PygameInstaller.command
您分配给脚本的权限和脚本的位置取决于您要授予谁执行权限。如果只有你,那么你的桌面和700应该没问题。
现在,如果您想从命令行执行脚本,就像您打开 Terminal.app
的实例所看到的那样,那么您可以选择。
如果你想完全指定命令,那么你可以输入这个(显示你不会输入的提示):
$ ~/Desktop/PygameInstaller.command
如果您只想指定脚本的名称,那么您可以在将~/Desktop
添加到您的PATH
后键入:
$ PATH="$HOME/Desktop:$PATH"
$ PygameInstaller.command
如果您喜欢只输入PygameInstaller
,则不要将代码放在名为PygameInstaller.command
的文件中。相反,您将代码放在一个名为 PygameInstaller
的文件中。
如果您需要每个人都可以执行该脚本,请将其放在/usr/local/bin
中,因为大多数人要么将其放在PATH
中,要么这样做没有政治问题。但是您必须使用sudo
命令来提升您的权限才能完成该任务。
但是,如果您希望将该脚本与您可以通过双击启动的任何其他应用程序一样对待,那么您还有更多 work 要做。
【讨论】:
谢谢你,杰夫!您的建议和链接非常有用。我不知道我应该具体的.command,现在第一次尝试成功了q,q 这个扩展是让shell文件在终端中自动执行吗?还有一个新手问题:如果我的一个朋友下载了一个包含 PygameInstaller.command 的整个文件夹并运行它,它会工作吗?或者 chmod 700 ~/FolderName/PygameInstaller.command 仍然需要?或者我应该按照你的建议使用 sudo?非常感谢!以上是关于在 MacOS 上使用 pip install 命令创建可执行文件的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Macos 错误上安装 Scikit Learn 包 [重复]
pip3 install pyautogui 失败,错误代码为 1 Mac OS
Pip install pygraphviz 失败:pygraphviz 的构建轮失败
pip安装包时gcc编译错误pip subprocess to install build dependencies did not run successfully.