pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<small id='9D8De'></small><noframes id='9D8De'>

  • <tfoot id='9D8De'></tfoot>

      <legend id='9D8De'><style id='9D8De'><dir id='9D8De'><q id='9D8De'></q></dir></style></legend>

      1. <i id='9D8De'><tr id='9D8De'><dt id='9D8De'><q id='9D8De'><span id='9D8De'><b id='9D8De'><form id='9D8De'><ins id='9D8De'></ins><ul id='9D8De'></ul><sub id='9D8De'></sub></form><legend id='9D8De'></legend><bdo id='9D8De'><pre id='9D8De'><center id='9D8De'></center></pre></bdo></b><th id='9D8De'></th></span></q></dt></tr></i><div class="xwo3a8f" id='9D8De'><tfoot id='9D8De'></tfoot><dl id='9D8De'><fieldset id='9D8De'></fieldset></dl></div>
        • <bdo id='9D8De'></bdo><ul id='9D8De'></ul>

        如何在不重復導入頂級名稱的情況下構造python包

        How to structure python packages without repeating top level name for import(如何在不重復導入頂級名稱的情況下構造python包)

            1. <i id='O5uEw'><tr id='O5uEw'><dt id='O5uEw'><q id='O5uEw'><span id='O5uEw'><b id='O5uEw'><form id='O5uEw'><ins id='O5uEw'></ins><ul id='O5uEw'></ul><sub id='O5uEw'></sub></form><legend id='O5uEw'></legend><bdo id='O5uEw'><pre id='O5uEw'><center id='O5uEw'></center></pre></bdo></b><th id='O5uEw'></th></span></q></dt></tr></i><div class="i8d3a2m" id='O5uEw'><tfoot id='O5uEw'></tfoot><dl id='O5uEw'><fieldset id='O5uEw'></fieldset></dl></div>

              <small id='O5uEw'></small><noframes id='O5uEw'>

            2. <legend id='O5uEw'><style id='O5uEw'><dir id='O5uEw'><q id='O5uEw'></q></dir></style></legend>
              <tfoot id='O5uEw'></tfoot>
                  <bdo id='O5uEw'></bdo><ul id='O5uEw'></ul>
                    <tbody id='O5uEw'></tbody>
                  本文介紹了如何在不重復導入頂級名稱的情況下構造python包的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我是 python 包管理的新手,肯定做錯了什么.我被鼓勵創建一個目錄結構如下:

                  I'm brand new at python package management, and surely have done something wrong. I was encouraged to create a directory structure as follows:

                  bagoftricks
                  ├── bagoftricks
                  │?? ├── bagoftricks
                  │?? │?? ├── __init__.py
                  │?? │?? └── bagoftricks.py
                  │?? └── __init__.py
                  ├── README.md
                  └── setup.py
                  

                  bagoftricks.py 包含兩個函數,levenshtein()geofind().

                  bagoftricks.py contains two functions, levenshtein() and geofind().

                  我想把它們稱為:

                  import bagoftricks
                  
                  x = bagoftricks.levenshtein(arg1,arg2) 
                  

                  相反,我發現我必須這樣做:

                  Instead, I find I have to do this:

                  import bagoftricks
                  
                  x = bagoftricks.bagoftricks.levenshtein(arg1,arg2) 
                  

                  有沒有更好的方法來組織我的包裹,而不用重復命名?

                  Is there a better way to organize my packages in the first place, without the naming redundancy?

                  更新

                  所以,我按照下面 Avichal Badaya 的說明,移除了一層嵌套.也就是說,我現在有……

                  So, I followed Avichal Badaya's instructions below, and removed one level of nesting. That is, I now have...

                  bagoftricks
                  ├── bagoftricks
                  │?? ├── __init__.py
                  │?? └── bagoftricks.py
                  ├── README.md
                  └── setup.py
                  

                  但是,要調用這個包,我還是有...

                  However, to call this package, I still have...

                  from bagoftricks.bagoftricks import geofind()
                  

                  import bagoftricks
                  

                  然后

                  >>> bagoftricks.bagoftricks.geofind()
                  

                  而不是想要的......

                  Rather than the desired....

                  from bagoftricks import geofind()
                  

                  import bagoftricks
                  
                  >>> bagoftricks.geofind()
                  

                  我無法移除額外的嵌套層.以此類推,當我嘗試移除一層嵌套時,我的模塊是扁平的,如下所示:

                  I cannot remove that extra layer of nesting. When I try, by analogy, to remove one more level of nesting, so that my module is flat, as:

                  bagoftricks
                  ├── __init__.py
                  ├── bagoftricks.py
                  ├── README.md
                  └── setup.py
                  

                  我根本無法構建包...

                  I cannot build the package at all...

                  $ python setup.py build
                  running build
                  running build_py
                  error: package directory 'bagoftricks' does not exist
                  

                  像標準包一樣使用自然導入,沒有多余的頂級名稱導入的秘訣是什么?

                  What's the secret for natural imports like standard packages use, without redundant top-level name imports?

                  推薦答案

                  第一級bagoftricks"就可以了.可以這么說,這只是您的項目"的名稱.在你有一個 setup.py 和其他文件告訴打包系統他們需要知道什么.

                  The first level "bagoftricks" is fine. That's just the name of your "project" so to speak. In the you have a setup.py, and other files that tell the packaging systems what they need to know.

                  然后您可以將代碼直接放在該模塊中,或者放在 src 目錄中.您甚至可以只使用這種結構:

                  You can then have the code directly in this module, or in a src directory. You can even go as far as just having this structure:

                  bagoftricks
                  ├── bagoftricks.py
                  ├── README.md
                  └── setup.py
                  

                  但我不建議這樣做,主要是因為您可能想稍后重新組織,如果您已經有一個合適的"包會更容易.此外,大多數人、工具和文檔都假設你有一個包,所以它更容易.

                  But I would not recommend that, mostly because you might want to reorganize things later, and it's easier if you already have a "proper" package. Also most people, tools and docs assume you have a package, so it's easier.

                  所以最小值是:

                  bagoftricks
                  ├── bagoftricks
                  │   └── __init__.py
                  ├── README.md
                  └── setup.py
                  

                  使用 __init__.py 包含您要導入的函數.然后你可以像這樣使用這些函數:

                  With __init__.py containing the functions you want to import. You then use these functions like this:

                  from bagoftricks import levenshtein, anotherfunction
                  

                  一旦 __init__.py 變得太大,你想把它分成幾個模塊,給你這樣的東西:

                  Once that __init__.py becomes too big, you want to split it up in several modules, giving you something like this:

                  bagoftricks
                  ├── bagoftricks
                  │   ├── __init__.py
                  │   ├── anothermodule.py
                  │   └── levenshtein.py
                  ├── README.md
                  └── setup.py
                  

                  您的 __init__.py 然后應該從各個模塊導入函數:

                  Your __init__.py should then import the functions from the various modules:

                  from bagoftricks.levenshtein import levenshtein
                  from bagoftricks.anothermodule import anotherfunction
                  

                  然后你仍然可以像以前一樣使用它們.

                  And then you can still use them like like you did before.

                  這篇關于如何在不重復導入頂級名稱的情況下構造python包的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  python: Two modules and classes with the same name under different packages(python:不同包下同名的兩個模塊和類)
                  Configuring Python to use additional locations for site-packages(配置 Python 以使用站點包的其他位置)
                  Install python packages on OpenShift(在 OpenShift 上安裝 python 包)
                  How to refresh sys.path?(如何刷新 sys.path?)
                  Distribute a Python package with a compiled dynamic shared library(分發帶有已編譯動態共享庫的 Python 包)
                  R, Python: install packages on rpy2(R,Python:在 rpy2 上安裝包)
                • <i id='ZVJXp'><tr id='ZVJXp'><dt id='ZVJXp'><q id='ZVJXp'><span id='ZVJXp'><b id='ZVJXp'><form id='ZVJXp'><ins id='ZVJXp'></ins><ul id='ZVJXp'></ul><sub id='ZVJXp'></sub></form><legend id='ZVJXp'></legend><bdo id='ZVJXp'><pre id='ZVJXp'><center id='ZVJXp'></center></pre></bdo></b><th id='ZVJXp'></th></span></q></dt></tr></i><div class="hhvgtzc" id='ZVJXp'><tfoot id='ZVJXp'></tfoot><dl id='ZVJXp'><fieldset id='ZVJXp'></fieldset></dl></div>
                • <legend id='ZVJXp'><style id='ZVJXp'><dir id='ZVJXp'><q id='ZVJXp'></q></dir></style></legend>
                    <tbody id='ZVJXp'></tbody>

                  <small id='ZVJXp'></small><noframes id='ZVJXp'>

                        <bdo id='ZVJXp'></bdo><ul id='ZVJXp'></ul>
                          <tfoot id='ZVJXp'></tfoot>

                          • 主站蜘蛛池模板: 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 间甲酚,间甲酚厂家-山东祥东新材料 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 春腾云财 - 为企业提供专业财税咨询、代理记账服务 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 云阳人才网_云阳招聘网_云阳人才市场_云阳人事人才网_云阳人家招聘网_云阳最新招聘信息 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 短信营销平台_短信群发平台_106短信发送平台-河南路尚 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 |