第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

導(dǎo)入錯(cuò)誤:在沒(méi)有已知父包的情況下嘗試相對(duì)導(dǎo)入

導(dǎo)入錯(cuò)誤:在沒(méi)有已知父包的情況下嘗試相對(duì)導(dǎo)入

嚕嚕噠 2022-08-25 14:04:35
我正在學(xué)習(xí)使用python編程,并且我在從包中的模塊導(dǎo)入時(shí)遇到問(wèn)題。我正在使用Python 3.8.2 64位的visual studio代碼。.vscode├── ecommerce│   ├── __init__.py│   ├── database.py│   ├── products.py│   └── payments│       ├── __init__.py│       ├── authorizenet.py│       └── paypal.py├── __init__.py└── main.py在我擁有的文件中:ecommerce/products.py#products.pyfrom .database import Databasep = Database(3,2)這樣我就可以從文件中導(dǎo)入類(lèi)。但是我收到錯(cuò)誤Databaseecommerce/database.pyImportError : Attempted relative import with no known parent package
查看完整描述

4 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

由于您使用的是Python 3.8版本,因此導(dǎo)入的工作方式略有不同,但我認(rèn)為這應(yīng)該有效:


使用以下任一方法:


from database import Database

#Database is the class

或嘗試:


import database.Database

最后,這個(gè)是非常安全的,可能是最佳實(shí)踐:


from . import Database  

# The '.' (dot) means from within the same directory as this __init__.py module grab the Database class.


查看完整回答
反對(duì) 回復(fù) 2022-08-25
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

Python文檔和實(shí)驗(yàn)來(lái)看,似乎相對(duì)導(dǎo)入(涉及.,..等)僅在以下情況下有效:

  1. 導(dǎo)入模塊具有 除 以外的 一個(gè),并且進(jìn)一步說(shuō),__name____main__

  2. 導(dǎo)入模塊pkg.module_name,即它必須從目錄層次結(jié)構(gòu)的上方導(dǎo)入(要有一個(gè)父 pkg 作為其一部分)。__name____name__

導(dǎo)入模塊是通過(guò)包含父 pkg 的模塊語(yǔ)法指定的,在這種情況下,它仍然是 ,因此它作為腳本運(yùn)行,但相對(duì)導(dǎo)入將起作用。這里設(shè)置并用于查找父包,而 是 ;更多 這里.python -m pkg.module__name____main____package____name____main__

[畢竟,這似乎是確定相對(duì)進(jìn)口是否/如何運(yùn)作的關(guān)鍵。 表示腳本或模塊(即或 )。 指示相對(duì)導(dǎo)入相對(duì)于包中出現(xiàn)的位置,并且頂部需要在 .] 中。__package__sys.path__name____main__module_name__package____package__sys.path

因此,繼續(xù)@AmitTendulkar的示例,如果您將其作為或從項(xiàng)目根目錄運(yùn)行,或者從該根目錄和輸入交互式python,或者 products.py 中的相對(duì)導(dǎo)入將起作用。> python main.py> python -m main> python -m ecommerce.productsimport mainimport ecommerce.products

但是,如果您或從電子商務(wù)目錄中,或者從該電子商務(wù)目錄中輸入交互式python,它們將失敗。> python products.py> python -m productsimport products

添加是有幫助的

print("In module products __package__, __name__ ==", __package__, __name__)

等在每個(gè)文件中進(jìn)行調(diào)試。

更新:

導(dǎo)入的工作方式取決于 和 ,而不是 。發(fā)出自 ,有一個(gè) 、 的 、 - 工作模塊的絕對(duì)導(dǎo)入,相對(duì)導(dǎo)入失敗。sys.path__package____name__/home/jj> python sub/mod.pysys.path__package__/home/jj/subNonesys.path

> python -m sub.mod有 , 的 , - 工作中模塊的絕對(duì)導(dǎo)入, 相對(duì)于 + 的導(dǎo)入工作。sys.path__package__/home/jjsubsys.pathsys.path__package__

添加更有幫助

import sys    
print("In module products sys.path[0], __package__ ==", sys.path[0], __package__)

等在每個(gè)文件中進(jìn)行調(diào)試。


查看完整回答
反對(duì) 回復(fù) 2022-08-25
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

我在Windows上遇到了類(lèi)似的問(wèn)題,對(duì)我有幫助的是(適應(yīng)你的目錄):


# local imports

import sys

sys.path.append(r"C:\path\to\your\project")


from ecommerce.database import Database


查看完整回答
反對(duì) 回復(fù) 2022-08-25
?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

考慮以下基本文件結(jié)構(gòu)


├── ecommerce

│   ├── __init__.py

│   ├── database.py

|   └── products.py

└── main.py

我假設(shè)您正在從項(xiàng)目根目錄運(yùn)行。python main.py


以下是從Python教程復(fù)制的文本,解釋了有關(guān)相對(duì)導(dǎo)入的基本規(guī)則,


請(qǐng)注意,相對(duì)導(dǎo)入基于當(dāng)前模塊的名稱。因?yàn)橹髂K的名稱總是,所以用作Python應(yīng)用程序的主模塊的模塊必須總是使用絕對(duì)導(dǎo)入。__main__


所以下面的代碼會(huì)起作用,


# main.py

import ecommerce.products 

# or to use it directly 

# from ecommerce.products import my_product


ecommerce.products.my_product()

您的 product.py 可能看起來(lái)像這樣:


# ecommerce/products.py

from .database import Database


def my_product():

    p = Database(3, 2)

database.py 將如下所示,


# ecommerce/database.py


class Database():

    def __init__(self, x, y):

        self._x = x

        self._y = y

        print('Inside DB init')


    # Rest of the methods...

你現(xiàn)在會(huì)得到,


> python main.py

Inside DB init

理想情況下,根目錄的文件不是必需的,因?yàn)榘Q是從電子商務(wù)開(kāi)始的。__init__.py


您也可以運(yùn)行命令直接調(diào)用 products.py。但這不會(huì)產(chǎn)生任何輸出,因?yàn)槲覀儧](méi)有調(diào)用my_product()函數(shù)(僅定義它)。python -m ecommerce.products


調(diào)用將不起作用,因?yàn)楫?dāng)前模塊的名稱將變?yōu)?而不是 。相對(duì)導(dǎo)入僅在當(dāng)前包中使用時(shí)才有效(因此在主腳本中,您始終需要導(dǎo)入包)。python ecommerce/products.py__main__ecommerceecommerce


查看完整回答
反對(duì) 回復(fù) 2022-08-25
  • 4 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)