【发布时间】:2023-03-19 11:16:01
【问题描述】:
我想在 package_data 下包含某些用户定义的文件,例如 cfg.ini,也具有写入权限。但默认情况下,写入权限被禁用,因为我使用 sudo 安装了我的包。
sudo python setup.install
顺便说一句,我正在使用 setuptools 创建我的 setup.py
请有任何建议。
【问题讨论】:
标签: python setuptools setup.py pypi
我想在 package_data 下包含某些用户定义的文件,例如 cfg.ini,也具有写入权限。但默认情况下,写入权限被禁用,因为我使用 sudo 安装了我的包。
sudo python setup.install
顺便说一句,我正在使用 setuptools 创建我的 setup.py
请有任何建议。
【问题讨论】:
标签: python setuptools setup.py pypi
有两种解决方案。
只需使用(不带 sudo)将包安装到本地用户(而不是系统):
python setup.py install
这将允许用户编辑自定义文件。
作为在 *package_data* 下拥有用户定义文件的替代方法,您可以简单地在模块读取的用户特定目录中生成用户特定文件。然后由用户编辑。在 Windows 上,这将存储在用户的 AppData 目录下。
appdirs 包提供了对用于存储应用程序数据的用户目录的轻松访问(它是 MIT 许可的)。
从 PyPi 安装 appdirs:
sudo pip install appdirs
或者你可以下载源代码,然后安装:
sudo python setup.py install
这是一个例子:
>>> import appdirs
>>> user_dir = appdirs.user_data_dir("YourAppOrModule", "YourName")
>>> print(user_dir)
C:\Users\TheUser\AppData\Local\YourName\YourAppOrModule
然后您可以在user_dir 下生成用户文件并允许用户从那里编辑它们。
【讨论】: