为什么python setup.py安装的模块找不到安装的资源?
Why python setup.py installed module cannot find the installed resources?
我已将 python 模块正确安装到 /usr/lib/python2.7/site-packages/mymod
中。
但是,当我尝试 运行 它时
python2 -m mymod
它 运行 仅来自 /home/me/dev/mymod/mymod/
目录,如果我从任何其他目录执行相同操作,则会失败。
IOError: [Errno 2] No such file or directory: 'mymod/data/icons/mymod.ico'
它拥有所有可用的正确路径:
/usr/lib/python2.7/site-packages/line_profiler-1.0-py2.7-linux-x86_64.egg
/usr/lib/python2.7/site-packages/textblob-0.11.1-py2.7.egg
/usr/lib/python2.7/site-packages/nltk-3.2-py2.7.egg
/usr/lib/python2.7/site-packages/pyCNN-0.0.0-py2.7-linux-x86_64.egg
/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/gst-0.10
/usr/lib/python2.7/site-packages/gtk-2.0
/usr/lib/python2.7/site-packages/wx-3.0-gtk2
为什么在 /usr/lib/python2.7/site-packages
里面找不到 mymod/data/icons/mymod.ico
。我尝试在 mymod.py
中使用 mymod/data/icons/
和 data/icons
中的不同路径,但没有任何帮助。
$ file /usr/lib/python2.7/site-packages/mymod/data/icons/mymod.ico
/usr/lib/python2.7/site-packages/mymod/data/icons/mymod.ico: MS Windows icon resource - 1 icon, 128x128
这个问题一直困扰着我所有 setup.py
的 python 项目,我认为我明显误解了 python 模块应该如何 运行。
不知何故,我认为您的本地参考资料搞砸了。
如果您从另一个目录启动 python -m module
,相对文件引用可能仍被解释为相对于您的工作目录,而不是相对于需要该文件的模块。
尝试如下引用您的模块本地文件,看看是否能解决问题:
from os import path
datadir = path.join(path.dirname(__file__), 'data')
icofile = path.join(datadir, 'icons', 'mymod.ico')
提议in this answer.
我已将 python 模块正确安装到 /usr/lib/python2.7/site-packages/mymod
中。
但是,当我尝试 运行 它时
python2 -m mymod
它 运行 仅来自 /home/me/dev/mymod/mymod/
目录,如果我从任何其他目录执行相同操作,则会失败。
IOError: [Errno 2] No such file or directory: 'mymod/data/icons/mymod.ico'
它拥有所有可用的正确路径:
/usr/lib/python2.7/site-packages/line_profiler-1.0-py2.7-linux-x86_64.egg
/usr/lib/python2.7/site-packages/textblob-0.11.1-py2.7.egg
/usr/lib/python2.7/site-packages/nltk-3.2-py2.7.egg
/usr/lib/python2.7/site-packages/pyCNN-0.0.0-py2.7-linux-x86_64.egg
/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/gst-0.10
/usr/lib/python2.7/site-packages/gtk-2.0
/usr/lib/python2.7/site-packages/wx-3.0-gtk2
为什么在 /usr/lib/python2.7/site-packages
里面找不到 mymod/data/icons/mymod.ico
。我尝试在 mymod.py
中使用 mymod/data/icons/
和 data/icons
中的不同路径,但没有任何帮助。
$ file /usr/lib/python2.7/site-packages/mymod/data/icons/mymod.ico
/usr/lib/python2.7/site-packages/mymod/data/icons/mymod.ico: MS Windows icon resource - 1 icon, 128x128
这个问题一直困扰着我所有 setup.py
的 python 项目,我认为我明显误解了 python 模块应该如何 运行。
不知何故,我认为您的本地参考资料搞砸了。
如果您从另一个目录启动 python -m module
,相对文件引用可能仍被解释为相对于您的工作目录,而不是相对于需要该文件的模块。
尝试如下引用您的模块本地文件,看看是否能解决问题:
from os import path
datadir = path.join(path.dirname(__file__), 'data')
icofile = path.join(datadir, 'icons', 'mymod.ico')
提议in this answer.