Python 板


LINE

抱歉,我一开始举的例子似乎过於简化且容易引起困惑, 我试着把状况写得更详尽一点,但可能会稍长,请大家见谅。 先回覆ThxThx的问题:
1F:→ ThxThx: 我蛮好奇,有什麽理由要把script和package放在一起吗 06/18 19:46
2F:→ ThxThx: 就连手动加进sys.path也是不好的手段 06/18 19:46
就一般来说,我还真不了解Python的import逻辑是什麽... 假如我有一个自己写的package foo,里面有个common.py, 另外有个专门放分析ipynb的资料夹bar,bar跟foo在同一层。 每次我都要先在分析的开头写sys.path.append(".."), 才能from foo.common import *。 我也觉得这样写好像很丑, 但是我又不能直接写成from ..foo.common import *, (ValueError: attempted relative import beyond top-level package) 我不懂为什麽会这样,明明才往上一层,怎麽就beyond top-level了。 希望有人可以顺便为我解惑。 -------- 回到我本次的project,我的资料夹最初大概长这样: X_project |--ocr_tools.py |--recognize.py(请见本板#1R9exc1U) |--requirements.txt |--test_list.json |--photos |--(很多张测试用照片) |--X_manuals |--(很多csv、json等格式的资料档案) |--functionality_check |--validate.py |--validation_log.txt 其中, 绿色的部分是想转成CLI功能的(这里看到的都只是scripts), recognize.py包含主要的功能,validate.py是给开发者跑自我诊断用的。 BTW,这是一个内部的套件,所以没有要上到PyPI。 粉红色是运行依赖的资料(亮色是需要读、深色是需要写)。 现在,假设我在X_project资料夹下, 我可以python recognize.py -i <image_file>、 以及python functionality_check/validate.py跑自我诊断。 现在,因为要包成package,所以我把架构做了点调整,变成: X_project |--setup.py |--clsmbstu_ocr |--__init__.py |--ocr_tools.py |--recognize.py |--requirements.txt |--test_list.json |--photos |--(很多张测试用照片) |--X_manuals |--(很多csv、json等格式的资料档案) |--functionality_check |--__init__.py |--validate.py |--validation_log.txt 另外,把recognize.py与validate.py可运行的部份改成一个main_func。 所以我的setup.py是这样写的: ``` import re from setuptools import setup, find_packages with open("clsmbstu_ocr/requirements.txt") as req: dependencies = [re.match(r"(.+)\n", line).group(1) for line in req] setup( name="clsmbstu_ocr", version="1.0.0-1", packages=find_packages(), install_requires=dependencies, package_data={ "": ["*.json", "*.jpg", "*.png", "*.txt"] }, entry_points={ "console_scripts": [ "ocr_view = clsmbstu_ocr.recognize:main_func", "ocr_validate = clsmbstu_ocr.functionality_check.validate:main_func" ] }, author="clsmbstu", author_email="XXX@mail", description="blablabla" ) ``` 然後运行python setup.py install,看起来安装可以跑完, 但是一运行ocr_view马上就遇到第一个错误: ModuleNotFoundError: No module named 'ocr_tools' 做了很多尝试, 反正不是ModuleNotFoundError,就是所需资料档找不到的FileNotFoundError... 现在已经不太知道怎麽办了。 我不知道这样提供的资讯够不够? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.74.120.191
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1529638467.A.4C2.html ※ 编辑: clsmbstu (203.74.120.191), 06/22/2018 11:36:36
3F:推 MAGICXX: 呃 为什麽要from XX import *呢? 06/22 11:56
4F:→ MAGICXX: 直接import XX不就好了? 06/22 11:56
5F:→ MAGICXX: 你的情况就是 import foo.common 就好了不是? 06/22 11:57
6F:→ clsmbstu: 你是说我第一页的例子吗? 06/22 12:31
7F:→ clsmbstu: import foo.common的话,呼叫里面的函数不方便 06/22 12:32
8F:→ clsmbstu: 例如我得要:foo.common.do_a_thing() 06/22 12:33
9F:→ clsmbstu: 但是 from foo.common import * 的话 06/22 12:34
10F:→ clsmbstu: 要做某个分析或常用转换我只要:do_a_thing() 就可以了 06/22 12:34
11F:→ clsmbstu: 的确你说的方式也可以 但我相信跟我最大的问题无关 06/22 12:37
12F:→ clsmbstu: 因为事实上我也不能 import ..foo.common 06/22 12:39
13F:→ clsmbstu: SyntaxError: invalid syntax 06/22 12:39
14F:推 ThxThx: 我开一篇回你 06/22 16:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP