gpt4 book ai didi

python - 如何将 python 脚本作为可执行文件运行并保持对其周围文件的访问?

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:08 26 4
gpt4 key购买 nike

我有一个 python 程序“Alfred.py”,我希望能够通过单击图标或在终端中键入“Alfred”来运行它。它连接到数据库文件,并在需要时提取 Excel 文件。当我尝试通过单击运行它时,我得到的是:

mcaay:~ mcaay$ /Users/mcaay/Documents/Moje\ Dokumenty/MANTA/Alfred/Alfred.desktop ; exit;
/Users/mcaay/Documents/Moje Dokumenty/MANTA/Alfred/Alfred.desktop: line 1: [Desktop: command not found
Traceback (most recent call last):
File "/Users/mcaay/Documents/Moje Dokumenty/MANTA/Alfred/Alfred.py", line 59, in <module>
AND Usterka IS NOT NULL;""")
sqlite3.OperationalError: no such table: repairs
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

这一行:

sqlite3.OperationalError: no such table: repairs

意味着 Alfred.py 没有找到 .db 文件,创建了它,但它是空的,因此没有名为“repairs”的表。此 .db 文件与 Alfred.py 位于同一目录中。

到目前为止我做了什么:

  • 添加了“#!/usr/bin/env python3”作为 Alfred.py 的第一行
  • 在终端中输入“chmod +x/Users/mcaay/Documents/Moje\Dokumenty/MANTA/Alfred/Alfred.py”以使其可执行
  • 在我的 .bash_profile 中添加了“export PATH=$PATH:/Users/mcaay/Documents/Moje\Dokumenty/MANTA/Alfred/”,以使 Alfred.py 可从终端中的任何位置访问
  • 为可点击图标创建了 Alfred.desktop 文件:
[Desktop Entry]
Name=Alfred
Exec=python3 /Users/mcaay/Documents/Moje\ Dokumenty/MANTA/Alfred/Alfred.py
Terminal=true
Type=Application
  • 通过在终端中输入“chmod +x/Users/mcaay/Documents/Moje\Dokumenty/MANTA/Alfred/Alfred.desktop”使 Alfred.desktop 可执行

当我输入终端“Alfred.py”时,我得到:

mcaay:~ mcaay$ Alfred.py
Traceback (most recent call last):
File "/Users/mcaay/Documents/Moje Dokumenty/MANTA/Alfred/Alfred.py", line 59, in <module>
AND Usterka IS NOT NULL;""")
sqlite3.OperationalError: no such table: repairs

与单击“Alfred.desktop”相同。如果我只输入“Alfred”,我会得到:

mcaay:~ mcaay$ Alfred
-bash: Alfred: command not found

我只想输入“Alfred”即可工作,并且希望它能够正确查看数据库和其他文件,或者如果单击图标可以正常工作,也可以接受。我的 Googe-Fu 在这里让我失望了。做什么?

附注我注意到在我的主目录(“/Users/mcaay”)中创建了一个数据库文件,就好像 Alfred.py 从原始目的地拉到某个临时目的地并在那里执行(其他文件没有被拉出,因此程序崩溃了)。

最佳答案

当您告诉 SQLite 在哪里查找数据库时,您使用的是相对路径,但该相对路径是相对于当前工作目录的。您需要更改脚本内的目录或为 SQLite 提供数据库的完整路径。无论哪种方式,这都需要查找脚本所在位置的逻辑,或者您可以将数据库放在另一个众所周知的路径中(例如,~/.config/alfred)。就我个人而言,我更喜欢始终构建完整路径,并尽可能避免相对路径(和更改目录)选项,但是脚本路径的 chdir 也应该相对安全,并且此时可能需要较少的更改。

关于python - 如何将 python 脚本作为可执行文件运行并保持对其周围文件的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54353865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com