簡體   English   中英

跨平台安裝程序路徑

[英]Cross-Platform Installer paths

我正在為我正在制作的 Python 應用程序編寫安裝程序,並且需要具有不同文件位置的路徑。 這些是我到目前為止所擁有的,所以想知道這些是否正確,我是否應該更改其中的任何一個(尤其是 Linux/macOS 的)

我有一條路徑:

  • 實際的二進制
  • 對於配置文件
  • 自述文件
  • 開始菜單,如果用戶想要添加快捷方式(這將在 Linux/macOS 上創建.desktop文件,在 Windows 上創建快捷方式)
  • 桌面,如果用戶想要添加快捷方式

誰能告訴我是否應該對這些進行更改以使它們在所有設備上都可以使用等

Windows

binary = '%ProgramFiles%'
configs = '%AppData%'
README = '%ProgramFiles%'
start menu = '%AppData%\Microsoft\Windows\Start Menu'
desktop = os.path.expanduser('~\Desktop')

Linux

binary = '/usr/local/bin'
config = os.path.expanduser('~/.config')
README = '/usr/local/share/doc/packages'
start menu = os.path.expanduser('~/.local/share/applications')
desktop = os.path.expanduser('~/Desktop')

蘋果系統

binary = '/usr/local/bin'
config = os.path.expanduser('~/.config')
README = '/usr/local/share/doc/packages'
start menu = os.path.expanduser('~/.local/share/applications')
desktop = os.path.expanduser('~/Desktop')

提前致謝

編輯:我已經為用戶添加了更改路徑的選項,所以它不一定是完美的,但我想要最好的“正常”路徑

我的建議是盡可能使用sysconfig 例如在 POSIX 系統上get_paths()返回:

In [5]: sysconfig.get_paths()
Out[5]: 
{'stdlib': '/usr/local/lib/python3.9',
 'platstdlib': '/usr/local/lib/python3.9',
 'purelib': '/usr/local/lib/python3.9/site-packages',
 'platlib': '/usr/local/lib/python3.9/site-packages',
 'include': '/usr/local/include/python3.9',
 'platinclude': '/usr/local/include/python3.9',
 'scripts': '/usr/local/bin',
 'data': '/usr/local'}

請注意,sysconfig 支持不同的方案:

In [6]: sysconfig.get_scheme_names()
Out[6]: 
('nt',
 'nt_user',
 'osx_framework_user',
 'posix_home',
 'posix_prefix',
 'posix_user')

當安裝程序沒有 root 或管理員權限時, homeuser方案很方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM