欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python3的import問(wèn)題(pycharm可以運(yùn)行命令行import錯(cuò)誤)

 更新時(shí)間:2020年11月18日 08:35:26   作者:愛(ài)摳腳的coder  
這篇文章主要介紹了關(guān)于Python3的import問(wèn)題(pycharm可以運(yùn)行命令行import錯(cuò)誤),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

以前從來(lái)沒(méi)有寫過(guò)特別多的代碼,這次在閱讀論文的時(shí)候跑別人的代碼的時(shí)候出現(xiàn)了很多import的問(wèn)題,這里我想跟大家分享一下,我在Ubuntu系統(tǒng),使用的是anaconda3,版本為3.6,我一般會(huì)在pycharm上跑代碼,但是有時(shí)候pycharm上跑通的代碼,在命令行下總出現(xiàn)import的問(wèn)題,所以這里來(lái)總結(jié)一下,我就舉個(gè)簡(jiǎn)單的例子吧!

一、同一目錄下的import

下面是我的文檔的結(jié)構(gòu):你可以看到在工程tfexe下,存在兩個(gè)文件夾一個(gè)是datasets,一個(gè)是parallel,dataset下還有一個(gè)in文件夾和一個(gè)out.py文件,in文件夾里面存在b.py和bb.py兩個(gè)文件。parallel文件夾下存在的是兩個(gè)文件a.py和aa.py。(推薦您先建立好這個(gè)結(jié)構(gòu))

a.py文件代碼:

def say_hello():
  print("hello world!")

aa.py文件代碼:你可以看到是調(diào)用a.py里面的函數(shù)say_hello(),但是在pycharm這里是報(bào)錯(cuò)的,但是可運(yùn)行,你可以設(shè)置將文件夾設(shè)置成source root就可以讓他不顯示錯(cuò)誤了,但是無(wú)所謂啦!

import os
import sys
print("當(dāng)前的工作目錄:",os.getcwd())
print("python搜索模塊的路徑集合:",sys.path)
from a import say_hello
say_hello()

其他暫且無(wú)用,這里先不展示!

(1)pycharm運(yùn)行結(jié)果

右擊aa.py,來(lái)運(yùn)行,你會(huì)觀察到下面的結(jié)果:很顯然,我們的a.py成功的調(diào)用了aa.py文件的函數(shù)say_hello()。

你可以看到當(dāng)前的工作目錄是什么,那就是aa.py文件所在的絕對(duì)地址。

關(guān)注重點(diǎn),你可以看到Python搜索模塊的路徑集合,重點(diǎn)是前兩個(gè),你看到在pycharm上直接run運(yùn)行的,我們的搜索路徑有總的工程的絕對(duì)路徑還有運(yùn)行的文件所在的路徑。

(2)命令行運(yùn)行結(jié)果

需要你切換到parallel的文件夾下,然后運(yùn)行aa.py,觀察可得這個(gè)結(jié)果也是正確的。

你看出與上面的區(qū)別了嗎?很顯然,當(dāng)前的工作路徑全部都是一樣的,但是我們的Python的搜索模塊的路徑少了什么呀?觀察第二個(gè),你會(huì)發(fā)現(xiàn),哇哦,少了我的整個(gè)工程所在的絕對(duì)路徑。因?yàn)檫@里parallel的絕對(duì)路徑是存在的,所以在搜索a模塊的時(shí)候,發(fā)現(xiàn)是可以搜索到的,因?yàn)閍就在parallel這個(gè)絕對(duì)路徑的下面,當(dāng)然是可以搜索到的,但是如果你需要調(diào)用別的文件夾的東西呢?很顯然,這里就要出錯(cuò)啦~詳見(jiàn)下一節(jié)

總結(jié):import同一文件夾下的模塊是可以在pycharm還有命令行下都是可以運(yùn)行的!

二、不同的目錄下的import

b.py文件的內(nèi)容:

def say_goodbye():
  print("goodbye!")

bb.py文件的內(nèi)容:

import os
import sys
print("當(dāng)前的工作目錄:",os.getcwd())
print("python搜索模塊的路徑集合",sys.path)
#引入同一文件夾下的模塊
from b import say_goodbye
say_goodbye()

# #引入與本文件夾同級(jí)的文件夾
# from in2 import c
# c.say()

#引入與本文件夾的上級(jí)文件夾同一級(jí)的文件夾下的模塊
from parallel import a
a.say_hello()

c.py的文件內(nèi)容:

def say():
  print("say yes")

(1)pycharm運(yùn)行結(jié)果

你會(huì)發(fā)現(xiàn),在pycharm上import不同文件夾下的模塊居然成功了,這是為什么呢?你看Python的搜索模塊的路徑出來(lái)的結(jié)果,里面包含了,我這個(gè)總的工程tfexe的絕對(duì)路徑,所以在引入parallel的時(shí)候自然是成功的,因?yàn)閜arallel在我們的搜索路徑上。所以我推測(cè)啊,pycharm自動(dòng)的將整個(gè)工程的絕對(duì)路徑加入sys.path,也就是Python的模塊搜索路徑!

但是你肯定看到了我注釋掉了那個(gè)進(jìn)入in2模塊的,為什么注釋掉,因?yàn)榕懿煌ò。瑸槭裁磁懿煌??因?yàn)閕n2模塊,沒(méi)有搜到,很尷尬呀~那沒(méi)搜到肯定是因?yàn)槲业腜ython的搜索路徑不包含這里,仔細(xì)觀察結(jié)果,你發(fā)現(xiàn)只有tfexe的絕對(duì)路徑和in的絕對(duì)路徑,in2確實(shí)不在,怎么處理,把它加上絕對(duì)路徑不就好了!

加上能夠搜索到in2的絕對(duì)路徑:那不就是datasets的絕對(duì)路徑嘛!

在上面的bb.py里面添加上代碼

#-----這里是加上in2的絕對(duì)路徑的操作代碼------
sys.path.append("/home/syq/PycharmProjects/tfexe/datasets")

從運(yùn)行結(jié)果來(lái)看,你會(huì)發(fā)現(xiàn)居然都成功了,這都?xì)w功于sys.path!

(2)命令行運(yùn)行結(jié)果

很顯然啊,這里報(bào)錯(cuò)了,為什么呢?他說(shuō)模塊parallel不存在,為什么明明之前的在pycharm上可以運(yùn)行在這里不行了呢?

我們?cè)诿钚羞\(yùn)行注釋掉in2的那個(gè)部分的代碼,也就是(1)里面的未更改之前的bb.py的代碼:為了防止大家搞混,我在這里在貼一下bb.py的代碼:

import os
import sys
print("當(dāng)前的工作目錄:",os.getcwd())
print("python搜索模塊的路徑集合",sys.path)
#引入同一文件夾下的模塊
from b import say_goodbye
say_goodbye()

# #引入與本文件夾同級(jí)的文件夾
# from in2 import c
# c.say()

#引入與本文件夾的上級(jí)文件夾同一級(jí)的文件夾下的模塊
from parallel import a
a.say_hello()

結(jié)果:觀察到報(bào)錯(cuò)了,報(bào)錯(cuò)parallel這個(gè)模塊居然不存在,很顯然觀察sys.path的輸出,你發(fā)現(xiàn)少了之前的tfexe的絕對(duì)路徑,這就是parallel找不到的原因,因?yàn)樗麎焊辉谒阉髀窂缴希赃@里我在bb.py的代碼基礎(chǔ)上添加上能夠搜到parallel的搜索路徑。

修改后的bb.py的代碼:

import os
import sys
print("當(dāng)前的工作目錄:",os.getcwd())
sys.path.append("/home/syq/PycharmProjects/tfexe")
print("python搜索模塊的路徑集合",sys.path)

#引入同一文件夾下的模塊
from b import say_goodbye
say_goodbye()

# #引入與本文件夾同級(jí)的文件夾
# from in2 import c
# c.say()

#引入與本文件夾的上級(jí)文件夾同一級(jí)的文件夾下的模塊
from parallel import a
a.say_hello()

代碼運(yùn)行結(jié)果:注意我把未改之前的bb.py的運(yùn)行結(jié)果也放在了這里,你可以觀察到兩者的差別所在,你就會(huì)發(fā)現(xiàn),哦原來(lái)啊,下面的sys.path比更改之前的path多了一個(gè)可以搜索到parallel的絕對(duì)路徑了,很顯然就能成功的運(yùn)行了!

現(xiàn)在你差不多懂了吧,當(dāng)你遇到了import的錯(cuò)誤,你只需要輸出sys.path來(lái)看看能不能搜索到你要加入的模塊,如果不行就自己手動(dòng)的添加!

在引入in2模塊試試看!

bb.py文件的內(nèi)容:

import os
import sys
print("當(dāng)前的工作目錄:",os.getcwd())
sys.path.append("/home/syq/PycharmProjects/tfexe")
sys.path.append("/home/syq/PycharmProjects/tfexe/datasets")
print("python搜索模塊的路徑集合",sys.path)

#引入同一文件夾下的模塊
from b import say_goodbye
say_goodbye()

#引入與本文件夾同級(jí)的文件夾
from in2 import c
c.say()

#引入與本文件夾的上級(jí)文件夾同一級(jí)的文件夾下的模塊
from parallel import a
a.say_hello()

不管是在命令行還是pycharm都是可以得到結(jié)果的!

到此這篇關(guān)于關(guān)于Python3的import問(wèn)題(pycharm可以運(yùn)行命令行import錯(cuò)誤)的文章就介紹到這了,更多相關(guān)Python3 import出錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡(jiǎn)單了解Python多態(tài)與屬性運(yùn)行原理

    簡(jiǎn)單了解Python多態(tài)與屬性運(yùn)行原理

    這篇文章主要介紹了簡(jiǎn)單了解Python多態(tài)與屬性運(yùn)行原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • cmd輸入python命令無(wú)反應(yīng)的解決方案

    cmd輸入python命令無(wú)反應(yīng)的解決方案

    這篇文章主要介紹了cmd輸入python命令無(wú)反應(yīng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python 層次聚類算法圖文示例

    python 層次聚類算法圖文示例

    這篇文章主要介紹了python 層次聚類算法圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • python 簡(jiǎn)單的多線程鏈接實(shí)現(xiàn)代碼

    python 簡(jiǎn)單的多線程鏈接實(shí)現(xiàn)代碼

    這篇文章主要介紹了python 簡(jiǎn)單的多線程鏈接實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-08-08
  • Mac中pyenv的安裝與使用教程

    Mac中pyenv的安裝與使用教程

    pyenv支持linux下python多版本的共存和版本之間切換,非常方便,下面這篇文章主要給大家介紹了關(guān)于Mac中pyenv安裝與使用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • 深度學(xué)習(xí)詳解之初試機(jī)器學(xué)習(xí)

    深度學(xué)習(xí)詳解之初試機(jī)器學(xué)習(xí)

    機(jī)器學(xué)習(xí)可應(yīng)用在各個(gè)方面,本篇將在系統(tǒng)性進(jìn)入機(jī)器學(xué)習(xí)方向前,初步認(rèn)識(shí)機(jī)器學(xué)習(xí),利用線性回歸預(yù)測(cè)波士頓房?jī)r(jià),讓我們一起來(lái)看看吧
    2021-04-04
  • Python計(jì)算已經(jīng)過(guò)去多少個(gè)周末的方法

    Python計(jì)算已經(jīng)過(guò)去多少個(gè)周末的方法

    這篇文章主要介紹了Python計(jì)算已經(jīng)過(guò)去多少個(gè)周末的方法,涉及Python針對(duì)日期的相關(guān)數(shù)學(xué)運(yùn)算技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    Python利用雪花算法實(shí)現(xiàn)生成唯一ID

    雪花算法是在一個(gè)項(xiàng)目體系中生成全局唯一ID標(biāo)識(shí)的一種方式,偶然間看到了Python使用雪花算法不盡感嘆真的是太便捷了。本文就來(lái)聊聊這具體的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2022-11-11
  • python實(shí)現(xiàn)在函數(shù)圖像上添加文字和標(biāo)注的方法

    python實(shí)現(xiàn)在函數(shù)圖像上添加文字和標(biāo)注的方法

    今天小編就為大家分享一篇python實(shí)現(xiàn)在函數(shù)圖像上添加文字和標(biāo)注的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python利用字典破解WIFI密碼的方法

    Python利用字典破解WIFI密碼的方法

    今天小編就為大家分享一篇關(guān)于Python利用字典破解WIFI密碼的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02

最新評(píng)論