Python中文
首页
教程
问答
标签
搜索
登录
注册
在我用setuptools打包并用pip安装之后,Python代码看不到数据文件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我用<code>setuptools</code>打包了一些python代码。代码使用一个数据文件,但是在用<code>pip</code>安装包之后,代码找不到数据文件。我做错什么了?在</p> <hr/> <p>以下是文件结构和文件内容。可以在<a href="https://drive.google.com/open?id=1K8XTwGzI6NONdH_JdZmNRPBpsDur5YUR" rel="nofollow noreferrer">here</a>找到这些文件。python代码<code>setup.py</code>正在尝试使用<code>mesa/a.txt</code>数据文件。如果我不打包+pip,代码就可以正常工作。在</p> <pre><code>| |- tm/ | |- __init__.py | |- test2.py |- mesa/ | |- __init__.py | |- a.txt |- MANIFEST.in |- setup.py </code></pre> <p><code>MANIFEST.in</code>:</p> ^{pr2}$ <p><code>setup.py</code>:</p> <pre><code>from setuptools import setup setup(name='bobab', version='0.1', py_modules=['tm.test2'], author_email='x@gmail.com', package_data = { 'tm': ['mesa/a.txt'] }, ) </code></pre> <p><code>'mesa/a.txt</code>:</p> <pre><code>hello world! </code></pre> <p><code>tm/test2.py</code>:</p> <pre><code>import os def main(): print 'hi' print open(os.path.join('..', 'mesa', 'a.txt'), 'r').read() # print file content if __name__ == "__main__": main() </code></pre> <hr/> <p>我使用命令<code>python setup.py sdist</code>创建包。我使用以下命令安装程序包:</p> <pre><code>unzip bobab-0.1.zip cd bobab-0.1 python setup.py install </code></pre> <p>包看不到数据文件<code>mesa/a.txt</code>,如下面的错误消息所示:</p> <pre><code>Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 >>> import tm.test2 >>> tm.test2.main() hi Traceback (most recent call last): File "<stdin>", line 1, in <module> File "tm/test2.py", line 5, in main print open(os.path.join('..', 'mesa', 'a.txt'), 'r').read() IOError: [Errno 2] No such file or directory: '../mesa/a.txt' </code></pre> <p>我使用python2.7。在</p> <hr/> <p>以下是打包和安装日志。有趣的是,打包日志提到数据文件<code>mesa/a.txt</code>被添加到包中,但是安装日志没有提到它的存在。在</p> <p>包装日志:</p> <pre><code>C:\Users\Franck\Documents\GitHub\misc\src\test>python setu p.py sdist running sdist running egg_info creating bobab.egg-info writing bobab.egg-info\PKG-INFO writing top-level names to bobab.egg-info\top_level.txt writing dependency_links to bobab.egg-info\dependency_links.txt writing pbr to bobab.egg-info\pbr.json writing manifest file 'bobab.egg-info\SOURCES.txt' reading manifest file 'bobab.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'bobab.egg-info\SOURCES.txt' warning: sdist: standard file not found: should have one of README, README.rst, README.txt running check warning: check: missing required meta-data: url warning: check: missing meta-data: either (author and author_email) or (maintain er and maintainer_email) must be supplied creating bobab-0.1 creating bobab-0.1\bobab.egg-info creating bobab-0.1\mesa creating bobab-0.1\tm copying files to bobab-0.1... copying MANIFEST.in -> bobab-0.1 copying setup.py -> bobab-0.1 copying bobab.egg-info\PKG-INFO -> bobab-0.1\bobab.egg-info copying bobab.egg-info\SOURCES.txt -> bobab-0.1\bobab.egg-info copying bobab.egg-info\dependency_links.txt -> bobab-0.1\bobab.egg-info copying bobab.egg-info\pbr.json -> bobab-0.1\bobab.egg-info copying bobab.egg-info\top_level.txt -> bobab-0.1\bobab.egg-info copying mesa\a.txt -> bobab-0.1\mesa copying tm\__init__.py -> bobab-0.1\tm copying tm\test2.py -> bobab-0.1\tm Writing bobab-0.1\setup.cfg creating 'dist\bobab-0.1.zip' and adding 'bobab-0.1' to it adding 'bobab-0.1\MANIFEST.in' adding 'bobab-0.1\PKG-INFO' adding 'bobab-0.1\setup.cfg' adding 'bobab-0.1\setup.py' adding 'bobab-0.1\bobab.egg-info\dependency_links.txt' adding 'bobab-0.1\bobab.egg-info\pbr.json' adding 'bobab-0.1\bobab.egg-info\PKG-INFO' adding 'bobab-0.1\bobab.egg-info\SOURCES.txt' adding 'bobab-0.1\bobab.egg-info\top_level.txt' adding 'bobab-0.1\mesa\a.txt' adding 'bobab-0.1\tm\test2.py' adding 'bobab-0.1\tm\__init__.py' removing 'bobab-0.1' (and everything under it) </code></pre> <p>安装日志:</p> <pre><code>(sedona) dernonco@ilcompn0:/mnt/ilcompn0d1/user/dernonco/temp/bobab-0.1$ python setup.py install running install running bdist_egg running egg_info writing bobab.egg-info/PKG-INFO writing top-level names to bobab.egg-info/top_level.txt writing dependency_links to bobab.egg-info/dependency_links.txt reading manifest file 'bobab.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'bobab.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py creating build creating build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/tm copying tm/__init__.py -> build/lib.linux-x86_64-2.7/tm copying tm/test2.py -> build/lib.linux-x86_64-2.7/tm creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/tm copying build/lib.linux-x86_64-2.7/tm/__init__.py -> build/bdist.linux-x86_64/egg/tm copying build/lib.linux-x86_64-2.7/tm/test2.py -> build/bdist.linux-x86_64/egg/tm byte-compiling build/bdist.linux-x86_64/egg/tm/__init__.py to __init__.pyc byte-compiling build/bdist.linux-x86_64/egg/tm/test2.py to test2.pyc creating build/bdist.linux-x86_64/egg/EGG-INFO copying bobab.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying bobab.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying bobab.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying bobab.egg-info/pbr.json -> build/bdist.linux-x86_64/egg/EGG-INFO copying bobab.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO zip_safe flag not set; analyzing archive contents... creating dist creating 'dist/bobab-0.1-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing bobab-0.1-py2.7.egg Copying bobab-0.1-py2.7.egg to /mnt/ilcompn0d1/user/dernonco/pyenv/sedona/lib/python2.7/site-packages Adding bobab 0.1 to easy-install.pth file Installed /mnt/ilcompn0d1/user/dernonco/pyenv/sedona/lib/python2.7/site-packages/bobab-0.1-py2.7.egg Processing dependencies for bobab==0.1 Finished processing dependencies for bobab==0.1 </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>当我使用文件调用不同文件夹中的其他文件时,我在文件顶部使用此代码。在</p> <pre><code>from os.path import dirname, join, abspath sys.path.insert(0, abspath(join(dirname(__file__), '..'))) </code></pre> <p>然后呢</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
6 回答
当用户登录到站点时,如何显示不同的导航栏
10 回答
当用户登录时,在Flask中向用户显示处理结果
9 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
6 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
9 回答
当用户的付款逾期2天时,从Django模型检索数据
5 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
2 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
3 回答
当用户确定打印数量时,使用Matplotlib打印动画
6 回答
当用户离开时是否可以删除整个网页?
7 回答
当用户给出一个单词时如何打印?
10 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
6 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
5 回答
当用户被更改时,消息不会来自web套接字
2 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
5 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
5 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
10 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
6 回答
当用户购买某个类别时,是否查找其他类别的销售?
10 回答
当用户转到上一页时,Django和芹菜插入操作
2 回答