我正在尝试打包我编写的一个简单应用程序,以便可以使用python setup.py install
和(稍后)使用pip install awesomeapp
.
该应用程序由同一目录中的两个文件组成:
awesomeapp
awesomemod.py
哪里awesomeapp
是启动脚本(也在 python 中),它执行import awesomemod
.一切正常,而且总体来说很棒。接下来我创建了一个setup.py
如下所示的文件:
from distutils.core import setup
setup(name='awesomeapp',
version='1.4',
scripts=['awesomeapp'],
py_modules=['awesomemod'],
install_requires=['otherapp>1.0'],
description='amazing app which does awesome things',
# ...
platforms='UNIX',
long_description='bar',
)
现在,使用sudo python setup.py install
(以及 pip)安装可以正常执行。在 OSX 上,一切都按预期运行。然而在 Ubuntu 上(经过精确和可靠的测试),我收到错误:
traceback (most recent call last):
File "/usr/local/bin/awesomeapp", line 12, in <module>
import awesomemod
ImportError: No module named awesomemod
当我运行awesomeapp
脚本时。但是,如果我使用sudo
找到的模块运行脚本。该模块的安装/usr/local/lib/python2.7/dist-packages
权限-rw-r-----
是我的非 root 用户无法读取的。我需要更改什么才能使普通用户不需要 root 来运行我的应用程序?
答案1
.bash_profile
看来我在我的档案中找到了罪魁祸首。它包括条目
umask 027
注释掉该行后,权限就固定了!