彭彭老師您好: 把兩隻程式從教學主程式移到新增的modules資料夾中後出現 Can't open file 'module.py': [Errno 2] No such file or directory 沒有安裝plint,也檢查過檔案名稱,在新增資料夾以前程式運作正常。 不知是什麼原因導致的錯誤?
File "D:\python training\module.py", line 6, in import geometry File "D:\python training\geometry.py", line 6 def slope(x1,y1,x2,y2): ^ IndentationError: unindent does not match any outer indentation level 我直接貼出錯誤訊息好了 請問有一樣嗎
彭彭老師您好,有個問題想請教一下: 我在整理檔案時把module.py放進新建的子資料夾後,執行後顯示找不到module.py: python: can't open file 'module.py': [Errno 2] No such file or directory 那我要怎麼標記module.py的新位置才能讓程式找得到?
彭彭老師,您好 我照著影片的教學,想調整搜尋模組的路徑。因此寫了以下程式 import sys sys.path.append("modules") 我的資料夾名稱也是「modules」。 但是,只要「geometry.py」放在資料夾中,就無法執行(File "10_module.py", line 39, in import geometry ModuleNotFoundError: No module named 'geometry')。挪出資料夾就可以正常執行。 想請問想請問是什麼原因呢? 非常謝謝。
我是在Python Charm2017.3.4程式底下運作的。好像是在學習import system模組後就無法是用了。顯示的錯誤回報為 Cannot run program "C:\Users\Alex C L\PycharmProjects\NumberDemo\venv\Scripts\python.exe" (in directory "C:\Users\Alex C L\PycharmProjects\NumberDemo"): CreateProcess error=193, %1 不是有效的 Win32 應用程式 這些資訊您有辦法釐清是甚麼原因嗎?
發現一個問題,geometry.py編輯完成後要記得存檔,然後在module.py才能被呼叫使用,否則會出現下面這句話。這個問題查了老半天的才知道原因,一直想在主程式上趕快執行結果。要注意 AttributeError: module 'geometry' has no attribute 'distance'
想請問老師,和您一樣將geometry.py移入modules後利用sys.path.append("modules")後,有加入路徑,但還是一樣顯示Traceback (most recent call last): File "c:/Users/DELL/Desktop/python/start/module.py", line 11, in import geometry ModuleNotFoundError: No module named 'geometry',想請問問題在哪QQ
0:18 了解甚麼是模組
1:34 了解載入模組的基本語法 import 模組名稱 or import 模組名稱 as 模組別名
2:35 使用模組 模組名稱或別名.函式名稱(參考資料)or模組名稱或別名.變數名稱
3:25 內建模組
3:45 sys 模組(取的系統相關資訊)
4:01 sys程式範例
5:15 自訂模組
6:07 示範時間
8:42 建立 gemetry 模組 載入與使用
感謝你的紀錄 :)
老师,你真的讲的太好了,就是很生活化没有太多专业术语,对于入门者来说特别合适。基本上你说一遍,我就看懂了,但是我看别的老师的就不行,说的特别绕,感谢遇到你。
谢谢你的回馈,很高兴对你有帮助 :)
@@cwpeng-course彭彭老师好暖心哦,还特意切换简体字回复:)
因为你受共产党教育太久了,听正常人说话就觉得和善慈爱,只能说明中共的丑陋
@@赵乐际-v4g 不要在這裡說東說西好嗎,就是學程式而已,有必要這樣硬扯嗎
很感謝彭彭老師詳細的教學 真的受益無窮!! 尤其是帶著操作一遍 非常的清楚 也可以知道 完整的編碼程序
不然有時候 只看函式 或其他 參數的說明並沒辦法完全掌握 真的很感謝 優質的教學 !!
謝謝詳細的回饋,很高興對你有幫助哦 :)
2:20 import ....(原稱) as...(別名)
內建模組:
3:45 sys載入內建重要資訊
自訂模組:
5:34 自建幾何模組 geometry
8:55 實戰此模組
14:34 print(sys.path) 模組與路徑
20:30 sys.path.append("modules")
感謝你的紀錄 :)
20:30 在输入这个指令后,再输入import geomerty,我的python演算会报错,我感觉module.py和geometry.py必须放同一个文件夹下,才能import。
感謝老師的教學,非常淺顯易懂,看了這麼多python的教學影片,就屬您的最好理解,真的獲益良多,謝謝
謝謝你的回饋,很高興對你有幫助哦 :)
謝謝老的教學,看一次看不懂還可以再看第二次,忘了前面的還能找前面的影片來複習,非常感謝老師的用心教學。
不會呦,也謝謝你的回饋 :)
謝謝彭彭老師,教得很詳細>
哈哈哈 XDDDD 很多人都這樣說 ~~~~~
感謝彭大的教學
稍微記錄一下
做點筆記比較不會忘記
#載入內建的 sys 模組並取得資訊
# import sys as s
# print(s.platform)
# print(s.maxsize)
#建立geometry模組,載入使用(python的模組就是程式檔案)
# import geometry
# result=geometry.distance(1,1,5,5)
# print(result)
#調整搜尋模組的路徑
# import sys
# print(sys.path)#印出模組搜尋路徑(當要載入模組時,python會按照路徑搜尋模組,所以模組必須在這些路徑之中才有機會找到)
# import geometry
# print(geometry.distance(1,1,5,5))#if 將檔案移離路徑會找不到
#因為檔案不在路徑中所以我們要調整搜尋模組路徑
# import sys
# sys.path.append("modules")#在模組的搜尋路徑列表中"新增路徑"
# print(sys.path)
# import geometry
# print(geometry.distance(1,1,5,5))
感謝你的筆記哦 :)
想請教老師兩個問題:
1. 為甚麼我看電腦明明是 "系統類型: 64位元作業系統, x64型處理器"
但跑出來卻是win32? 還是32代表的不是這個意思?
2. 另外有一個資料夾 "_pycache_",這個資料夾有甚麼樣的作用呢?另外,甚麼樣的情形會出現這個資料夾呢?謝謝!
1. win32 是 windows 作業系統提供的開發介面的統稱,沿用下來的而已。
2. 使用模組的時候,會產生快取資料夾,會讓下次執行程式速度快一些,隨時可以刪掉無所謂。
老師的教學真的很細心, 好多重要資訊一班課程不會提到 莫名的卡關也無解 從老師這裡學到好多有用的tips ^^a
謝謝你的回饋,很高興對你有幫助哦 :)
這集有點開始難度了 認真看了兩遍 終於搞通了
彭彭老師ˊ真的太棒了
而且還是youtube 就可以學 ;))
good day 澎澎 teacher
不客氣,很高興你最後有看懂這些內容 :)
已經在各個地方看了一些基礎了,後來找到彭彭老師的影音,發現教的清楚明暸,感謝您。
不會,謝謝你的回饋 :)
是我錯覺還是這一集真的超小聲
XDDDD 可能不小心麥克風放遠了 ~~~
老師還是教得很好 不過這集真的有點小聲
有出現pylint問題的朋友
CTRL + SHIFT + P > Select linter > Disabled Linter
這樣就可以處理了
感謝你的分享哦 :)
請問這樣做的原因是為什麼,小弟不才感謝分享
請問如果使用macOS開發環境下,要怎麼處理呢?
非常有用!!! 極度感謝彭彭老師解答疑惑>_<
如何Import 非python原有的模組這一塊我卡了兩個禮拜了
我看了三本python的書跟三個courera中python的課程影片還有GOOGLE了很久
但可能是因為太菜所以不知道該找什麼關鍵字,一直找不出解決的方法
感謝彭彭老師清晰的教學>_<
我終於搞清楚要怎麼import模組跟設定路徑了~~~!
謝謝你詳細的回饋和支持,很高興對你有幫助哦 :)
感謝老師教學,看了很多其他人的教程,您的講解是最讓我聽得懂的。 請教一下:沒有做任何append,用sys.path直接顯示出來的路徑應該是默認就添加進去的,請問這個是把有"Python"關鍵字folder默認添加進去的嗎?
謝謝你的回饋,很高興對你有幫助哦 :)
不是,倒不是用這種方式決定的,只是程式引擎本身很人為的決定特定預設路徑而已 ~
老師你好
我建立資料夾(modules)把geometry放進去後
用sys.path.append("modules") 新增後
import geometry
print(geometry.distance(1,1,5,5))
是可以運行
但是import geometry(底下依舊有黃色波浪)
我滑鼠移過去顯示"無法解析匯入"然後有內建的快速解決方法
方法是:新增"./modules"至extraPaths
按下去會新增一個資料夾(.vscode)
裡面有一個settings.json檔
這是因為python的版本差異造成的嗎?
同問
試著import modules.geometry as geometry 看看
感謝 @kkitty1744tw 分享
#在入內建的sys 模組取得資訊
import sys
print(sys.platform)
print(sys.maxsize)
import sys as s
print(s.platform)
print(s.maxsize)
#建立geometry 嵌入使用
import geometry
result=geometry.distance(1,1,5,5)
print(result)
result=geometry.slope(1,2,5,6)
print(result)
#調整搜尋模組的路徑
import sys
print(sys.path)
import sys
sys.path.append("modules")#在模組的搜尋路徑
print (sys.path)#印出模組的搜尋路徑表
import geometry
print(geometry.distance(1,1,5,5))
:)
老師您好,謝謝老師詳細的教學真的讓人受益良多,但實際操作後有一個不太理解的地方。以下是我的程式碼,並且已經將geometry移動到modules的資料夾下,但並沒有加入sys.path.append("modules")這行程式碼,想請問老師為什麼在第二段#建立geometry,,,仍舊可以於terminal印出長度和斜率呢?謝謝老師!
#載入內建的sys模組並取得資訊
import sys as s #將模組設立別名 import...as...
print(s.platform)
print(s.maxsize)
#建立grometry模組,載入使用
import modules.geometry as g
result=g.distance(5,6,8,9)
print(result)
result2=g.slope(7,6,8,9)
print(result2)
#調整搜尋模組的路徑
import sys
print(sys.path) #印出模組的搜尋路徑
你寫 modules.geometry,他就可以從目前的資料夾,找到 modules 資料夾和底下的模組。
真的很喜歡老師的教學,為了能自己練習,我改用三角函數,但我有個問題想詢問
我的程式如下
三角函數.py
def sin(x,y,z):
return (x/z)
def cos(x,y,z):
return (y/z)
def tan(x,y,z):
return (y/x)
模駔.py
import 三角函數
result=三角函數.sin(3,4,5)
print(result)
result=三角函數.cos(3,4,5)
print(result)
result=三角函數.tan(3,4,5)
print(result)
如果我想要固定三個數的數值為x**2+y**2=z**2
這樣如何做調整
老師想請教以下幾個問題:
1. 自建模組資料匣中經過append("...")指定並成功執行沒問題,會自行產生_pycache_能刪除嗎,容量會龐大?
2. 專案越寫越龐大自然自己建立的模組就會增加越多,append("...")宣告有方法不要在入口程式宣告嗎,例如在py環境檔統一宣告以方便日後維護。
3. 模組A 和 模組B 各自程序中的結果能傳遞給 模組C 參考?
謝謝解答!!!
1. 產生的 _pycache_ 是為了讓執行速度稍微快一點,可以刪除,不過下次執行時會重新產生,容量不至於到很大,原則上可以不用理他。
2. 可以用設定檔的概念,不過還是要自己寫成載入設定檔,例如建立一個檔案 config.py 在專案資料夾,並且寫:
import sys
sys.path.append("modules");
在主程式中寫 import config,這樣就可以把 path 的處理都放進一個模組中,進一步也可以做檔案的載入加強方便性,這個我們晚點提到檔案的處理時,你可以再思考看看。
3. 可以在模組 c 中直接 import 模組 a 和模組 b,這樣就可以直接調用模組 a 和 b 中的變數或函式運算。
彭彭老師您好:
把兩隻程式從教學主程式移到新增的modules資料夾中後出現
Can't open file
'module.py': [Errno 2] No such file or directory
沒有安裝plint,也檢查過檔案名稱,在新增資料夾以前程式運作正常。
不知是什麼原因導致的錯誤?
有移動程式檔案,在執行的時候,就必須調整檔案路徑,例如可能需要打:python modules/module.py 這類的感覺。
實際上要看你的執行命令、工作路徑和資料夾的對應關係哦 ~
在import geometry這一行中我的編輯器跳出problems表示Unable to import 'geometry',但在執行程式時卻可以正常運行進行distance的運算,想請問是什麼原因呢?
如果程式正常運作就不用理會。
那個是一個叫做 pylint 的程式檢查工具提供的訊息,不一定完全正確。
感謝彭彭老師的教學,不過這集的音量好像有點小QAQ
謝謝,收到回饋哦 :)
分享一下自己照著做有遇到的問題,不確定從哪個版本開始,
儲存後會自動排版,導致 import geometry永遠會在 import sys之上
這樣加上路徑還沒成功就直接異常,
解決方法 是從 Extensions 中找到python 點齒輪(manage)後setting
搜尋 formatOnSave,勾選取消即可正常執行
不好意思不知道我們的問題一不一樣 我在打import geometry 的時候然後下面也是照著老師打 但跑的時候是出現錯誤訊息似乎是我import geometry那行錯了
File "D:\python training\module.py", line 6, in
import geometry
File "D:\python training\geometry.py", line 6
def slope(x1,y1,x2,y2):
^
IndentationError: unindent does not match any outer indentation level
我直接貼出錯誤訊息好了 請問有一樣嗎
@@eric-xn3kq 看起來不一樣,可以給我看完整的code嗎?
感謝分享,很有幫助的資訊 :)
老師教學的很詳細!
比學校老師好太多了QAQ
對我這個想轉職的社畜很有幫助
謝謝你的回饋,希望你順利轉職成功哦 :)
謝謝作者的製作。
不客氣呦
真的很謝謝老師!第一次發現老師的頻道,我正在卡關從GitHub 抓下來的程式碼,謝謝老師幫助我釐清😊
讚讚,很高興對你有幫助,很棒 :)
教得好 必須誇獎! 讚
謝謝哪 :)
感謝老師的教學 ,想問一下最後那裡:
把模組放到新增的資料夾會搜尋不到 ,需要新增新的路徑才能搜尋到, 是這樣嗎
概念上是這樣沒錯哦 ~
老師您好,如果將geometry拉至modules的資料夾時,現在會自動幫你在import geometry前面加上modules.
變成import modules.geometry,這樣好像就不需要sys.path.append("modules"),這是版本的問題嗎?
對的,這不是版本問題,就只是把 modules 資料夾當成是封包來看待的寫法。
謝謝老師的分享
我是之前是用R
再來學python的時候對於"()"和 "."
使用時機感到極度困惑
我終於搞懂什麼時候用"()" 什麼時候用 "."
謝謝你的回饋,覺得很棒 :)
老師,想請問一下我使用sys內建模組,取出電腦作業系統資料 print(sys.platform), 出來的是win32, 可是我查電腦控制台是64位元的作業系統,怎麼答案跟python取出來的值不一樣呢?
他是作業系統的開發代號,從古時代沿用至今的。
不一定直接反應你的軟硬體設置嘍。
老師 我想請問一下
我在這次影片的最後 新增搜尋路徑那邊
我將geometry放入我新增的資料夾後
在module.py裡也有打 sys.path.append("modules")
可是他還是顯示找不到模組
可以請教一下老師這是發生了甚麼事嗎 謝謝
到setting.json加入以下程式碼
"python.analysis.extraPaths": [
"./src",
"./modules"
]
希望能幫到你
感謝 @YenTai Yang 的說明 :)
如果你是按按鈕執行,不是自己打簡單的命令,可能會有工作路徑的問題。
彭彭老師您好,有個問題想請教一下:
我在整理檔案時把module.py放進新建的子資料夾後,執行後顯示找不到module.py:
python: can't open file 'module.py': [Errno 2] No such file or directory
那我要怎麼標記module.py的新位置才能讓程式找得到?
就像影片中後段說明的一樣,必須把你的資料夾放進 sys.path 的列表中,python 才會去資料夾中搜尋模組檔案。
感謝彭彭老師回覆,但我的問題是,我移動了主程式到子資料夾,模組的位置我沒有動,這樣執行起來會找不到主程式的位置。
後來我在老師的下一部影片的下面留言有看到說是路徑的問題,於是修改了搜尋路徑後出現這行:
/Users/Daniel/anaconda3/bin/python: can't find '__main__' module in 'backup'
附上螢幕截圖:drive.google.com/open?id=1WU0qdD-5UDMm7xRsLAcMSAkNdLB8Xu2a
這樣要如何解決呢?
@@zlsh8th11039 我也遇到一樣的問題,不知道是否是使用mac電腦的原因?
老師請教一下為甚麼我載入模組之後他會顯示'geometry'模組中沒有'distance'和'slope'的錯誤訊息?我該如何修正?
我也有這問題 不過當我儲存geometry的檔案之後就可以了
@@許珈銘-n2t 真的餒,每次都忘存檔XD
感謝 @許珈銘 的回應 :)
8:58
建立新的模組module = 跟以前一樣 建立一個新的程式檔案file
:)
老師好,請問我試寫了一個很簡單的加法的模組,答案也有跑出來,但是都會跑出來兩次,是為什麼呢?
我只是用很單純的import
result=
print(result)
另外請問,直接用print(geometry.distance(1,1,5,5))也可以,多result=有什麼特殊原因嗎?
謝謝老師
會跑出兩次就代表程式的運作中可能印了兩次,仔細追蹤看看。
只是讓新手容易接受,先把結果存放在 result 變數中再印這樣而已,直接取得結果印出也可以如你所寫的。
講解得很清楚
謝謝 :)
老師您好,想了解為什麼sys.path.append("modules")只需寫modules,不需要寫資料夾的完整路徑?謝謝!
相對路徑的概念,相對目前的專案路徑底下的 modules 資料夾
謝謝老師的講解
我照著老師的步驟做 在尚未移動資料夾時 可以顯示路徑 但當我移動後並打
import sys
sys.path.append("modules")
print(sys.path)
系統卻顯示
C:\Users\pkwro\AppData\Local\Programs\Python\Python311\python.exe: can't open file 'D:\\python\\module.py': [Errno 2] No such file or directory
請問老師是我哪裡寫錯 或是可以如何排解(已經確認資料夾名稱是相同的) 謝謝老師
與你發生一樣的問題,也正在尋求解答中🥲🥲
我也是一樣問題QQ
移動程式檔案到其他路徑後,除非你把程式檔案移回來,不然要透過 cd 指令改變終端機命令介面的工作資料夾,才能夠用原來的指令去執行程式。
@模組@
獨立的檔案程式:
將程式寫在一個檔案中,此檔案可重複載入使用
載入 > 使用:
先載入模組,在使用模組中的函式或變數
# -------------
**載入模組**
import 模組名稱
import 模組名稱 as 模組別名
**使用模組**
模組名稱或別名.函式名稱(參數資料)
模組名稱或別名.變數名稱
**內建模組**
sys模組:取得系統相關資訊
# 載入sys模組
import sys
# 使用sys模組
print(sys.platform) # 印出作業系統
print(sys.maxsize) # 印出整數型態的最大值
print(sys.path) # 印出搜尋模組的路徑
# 載入sys模組
import sys as s
# 使用sys模組
print(s.platform) # 印出作業系統
print(s.maxsize) # 印出整數型態的最大值
print(s.path) # 印出搜尋模組的路徑
**自訂模組**
建立檔案geometry.py,定義平面幾何運算用的函式
載入geometry模組,並使用模組中定義的功能
# ----------
# *載入內建的sys模組並取得資訊*
import sys
print(sys.platform)
print(sys.maxsize)
>>> win32
>>> 2147483647
import sys as system
print(system.platform)
print(system.maxsize)
>>> win32
>>> 2147483647
# ----geometry.py------
# *在geometry模組中定義幾何運算功能*
# 計算兩個點的距離
def distance(x1,y1,x2,y2):
return ((x2-x1)**2+(y2-y1)**2)**0.5
# 計算線段的斜率
def slope(x1,y1,x2,y2):
return (y2-y1)/(x2-x1)
# ----------
# *建立檔案geometry模組,載入使用*
import geometry
result = geometry.distance(1,1,5,5)
print(result)
>>> 5.656854249492381
result = geometry.slope(1,2,5,6)
print(result)
>>> 1.0
# ----------
# *調整搜尋模組的路徑*
import sys
print(sys.path) # 印出搜尋模組的路徑
>>> [很長=.=]
當我們要載入一個模組的時候,
python會按照順序去這些地方把module抓進來
如果找不到,就是這些路徑中沒有該module
(Ex: geometry.py module))
# ----
import sys
print(sys.path)
import geometry # 已經放到資料夾modules內了
print(geometry.distance(1,1,5,5))
>>> ModuleNotFoundError
# ----
import sys
sys.path.append("modules") # 在module的搜尋路徑列表中【新增路徑】
print(sys.path)
print('-------------')
import geometry
print(geometry.distance(1,1,5,5))
>>> [path=.=, 'modules']
>>> -------------
>>> 5.656854249492381
Good. :)
彭彭老師,您好
我照著影片的教學,想調整搜尋模組的路徑。因此寫了以下程式
import sys
sys.path.append("modules")
我的資料夾名稱也是「modules」。
但是,只要「geometry.py」放在資料夾中,就無法執行(File "10_module.py", line 39, in
import geometry ModuleNotFoundError: No module named 'geometry')。挪出資料夾就可以正常執行。
想請問想請問是什麼原因呢?
非常謝謝。
試試看 sys.path.append("./modules")
講述清晰明瞭,感謝!
不會,有幫助就好 :)
謝謝老師,我難得可以看完一半的程式語言教學
哈哈哈,好哦,很高興對你有點幫助 :)
感謝老師的影片!
我有個問題一直無法自己排除
模組那邊移動到新資料夾後,要修改路徑才能順利找到檔案這部分沒有問題
但是當我把前面課程的資料放到backup資料夾,我想要去複習的時候,在terminal 執行,卻沒有辦法找到file,用課程模組的方法和google用os 想重抓新的路徑也還是沒成功🤔
要在終端機命令介面,改變目前的工作路徑到子資料夾中,可以使用 cd 這個指令。
感謝老師,讓我更進一步了 :)
很高興對你有幫助哦 :)
請問~最近幾次要執行print動作時會顯示" CreateProcess error=193, %1 不是有效的 Win32 應用程式。
"的字樣,且完全無法執行print,想請問老師我可以如何排除這個問題呢?
如果之前可以,現在不行。
應該跟系統環境的設置很有關聯,但我無法從這個訊息中看出你的電腦發生了甚麼事情 ~
我是在Python Charm2017.3.4程式底下運作的。好像是在學習import system模組後就無法是用了。顯示的錯誤回報為
Cannot run program "C:\Users\Alex C L\PycharmProjects\NumberDemo\venv\Scripts\python.exe" (in directory "C:\Users\Alex C L\PycharmProjects\NumberDemo"): CreateProcess error=193, %1 不是有效的 Win32 應用程式
這些資訊您有辦法釐清是甚麼原因嗎?
想請教老師
在最後一個步驟雖然有成功印出距離
但在geometry前面的import被說有問題..
不知道為什麼印的出來卻說Unable to import 'geometry'
那是因為一個 pylint 的擴充工具在運作,他會檢查程式碼並回報,但不一定正確。
所以只要程式能正常運作,那就沒問題了 :)
老師感謝,說明非常清楚!
不客氣,謝謝 :)
大感謝
:)
重新複習,再次留言!!
謝謝老師的清楚說明,跟老師學習到很多。
請想問老師,如果使用 Jupyter Notebook來寫程式,是否不能夠直接import?謝謝老師。
主要是你得看它的環境設定要怎麼處理,才能找到我們自己寫的模組檔案,但我和 Jupyter Notebook 不熟,沒辦法協助細節的部份。
@@cwpeng-course 好的,謝謝老師的回覆。
謝謝老師用心的教學~想請問老師如果模組在資料夾裡面的資料夾該如何找到模組?
可以在加入路徑的時候把資料夾結構寫出來,例如 sys.path.append("第一層資料夾/第二層資料夾")
@@cwpeng-course 謝謝~~~
老師你好,我把幾何模組丟到資料夾內,新增了路徑,終端機可以跑出幾何模組的函式了,可是檔案卻顯示錯誤....
如果能程式能正確執行,基本上就沒問題。
檔案顯示錯誤很可能只是你安裝了 pylint 擴充套件,這是一種會自動檢查程式是否有錯的工具,但不一定完全正確。
@@cwpeng-course 我想了半天 看來看去都不覺得有錯 也能正常運行 原來是這樣XD
@@cwpeng-course
我也有這個問題,我有參考留言打Ctrl+Shift+P來把linter關掉,但是沒有select linter這個選項,所以我不知道還能怎麼辦了......
請問彭彭老師,有沒有神麼解決方法呢?還是這不用處理沒關係?
老師您好,想請問在模組可以使用模組名稱.變數名稱來做呼叫不需要加上小括號,但是在上一部影片中提到要呼叫函式,就算沒有要放入參數也要加上小括號,為甚麼會有這種區別呢?還是說因為是不同概念不能混在一起討論?對小括號的使用有點不太了解,謝謝老師
如果是想要呼叫函式,就一定要加小括號,若是其他資料,就不需要,直接用名稱就可以取得資料,只是個規矩要去接受而已哦。
發現一個問題,geometry.py編輯完成後要記得存檔,然後在module.py才能被呼叫使用,否則會出現下面這句話。這個問題查了老半天的才知道原因,一直想在主程式上趕快執行結果。要注意
AttributeError: module 'geometry' has no attribute 'distance'
感謝你的分享哦,讚讚 :)
终于解决了我的问题,感谢分享👍
彭老师~谢谢🙏你的视频很棒,一直跟你学习
谢谢你的回馈,很高兴对你有帮助 :)
請問老師: sys.path.append 所增加的路徑是永久有效, 還是暫時的, 程式執行完就失效了 ?
執行完就失效了 每次都要打
sys.path有預設路徑
感謝 @Asia Boy 的回應。確實如此哦 ~
請問geometry前面的import有紅線但是結果不影響有辦法解決嗎?
可以正常執行就沒問題。
那是一個叫做 pylint 的擴充套件產生的訊息,他會幫你檢查程式,但不一定正確。
@@cwpeng-course 請問老師是否可以讓她看起來沒有紅蚯蚓 除了先暫時關閉pylint 的擴充套件
很棒的教程
謝謝 :)
老師您好,我按照老師的步驟,將modules路徑新增到sys.path當中,印出也有出現,但是我卻無法import geometry ,程式說找不到模組,想問該如何解決,謝謝。
原本的寫法無法執行:
import geometry
print(geometry.distance(1,2,3,4))
另外好像python 自動幫我改,就可以了,改成 :
import modules.geometry as geometry
print(geometry.distance(1,2,3,4))
或是改成這樣也可以:
import modules.geometry
print(modules.geometry.distance(1,2,3,4));
print(sys.path) 列出結果為 ['D:\\....', '...', ] 猜測應為 列表
使用 print( type(sys.path) ) 列出的結果為 , 果然是 列表
再使用第4集的 有序列表的基本運算 的方式
sys.path[ len(sys.path):len(sys.path) ]=[".\\modules"]
成功將 modules 路徑加入
謝謝老師的說明
讚讚,很棒的嘗試和經驗分享 :)
請問這索引是怎麼運作的?
[ len(sys.path):len(sys.path) ]
看起來是[1:1],前面數字包含,後面數字不包含,這會有衝突嗎?
為什麼不是寫成
[ len(sys.path):len(sys.path)+1 ]
還是 [ len(sys.path)-1:len(sys.path) ] ?
老師 您好
我想請教一個VS code問題
就是我像您在同一個PY檔案內寫
import sys as s
s.path.append("Modules") # 在模組的搜尋路徑列表中【新增路徑】
print(s.path) # 印出模組的搜尋路徑列表
print('-------------------')
import geometry
print(geometry.distance(1, 2, 5, 3))
VS code程式卻在第一個geometry下方打引線 說unresolved import 'geometry'
這樣沒有問題 可以執行
但是我按自動排版的快捷鍵shift+alt+F後 程式編排會變成如下
import geometry
import sys as s
s.path.append("Modules") # 在模組的搜尋路徑列表中【新增路徑】
print(s.path) # 印出模組的搜尋路徑列表
print('-------------------')
print(geometry.distance(1, 2, 5, 3))
這執行肯定是會出現錯誤
並且依然顯示unresolved import 'geometry'
請問老師如何解決?是不是VScode不支援python自動編排?
我也有同樣問題!
程式可以執行基本上就沒問題。
你看到的訊息是一個叫做 pylint 的檢查工具丟出來的,他會幫你自動檢查,但不一定完全會正確哦。
想請問一下老師,如果我將geometry.py裝入modules這個資料夾內,接著把modules再放入backup資料夾中,相當於我有了兩層的資料夾,這樣我要怎麼用append的寫法新增路徑,並且在主程式中叫出geometry這個模組呢?
因為影片中只示範了一層,不曉得如果有兩層該如何操作
append("資料夾一/資料夾二") 類似這樣一路寫下去。
好的,謝謝老師~
老師你好,我想請問一下,有一個裝python官方內建模組的名字叫External Libraries 的資料夾(Lib)在Visual studio code的哪裡可以找的到? 謝謝老師
不太確定你指的東西是什麼?官方內建模組通常我們在初期從官方網站下載、安裝 Python 環境的時候就會一起裝起來了 ~
想請問老師
若是使用Jupyter進行操作是否就無法自建模組呢?
用jupyter還是可以自建模組
感謝回答 :) 細節上就要再去研究看看,不會完全一樣 ~
老師您好!
請問一下我的模組與主程式皆放在同一個資料夾中
使用sys.path也有顯示出此資料夾
但執行主程式後,終端機顯示TypeError: 'module' object is not callable
可能需要你寫的程式碼,比較方便確認情況哦 ~
已在您的FB私訊您囉!麻煩老師指教一下囉!謝謝
想請問老師,和您一樣將geometry.py移入modules後利用sys.path.append("modules")後,有加入路徑,但還是一樣顯示Traceback (most recent call last):
File "c:/Users/DELL/Desktop/python/start/module.py", line 11, in
import geometry
ModuleNotFoundError: No module named 'geometry',想請問問題在哪QQ
求解+1,我也遇到這個問題
請問老師為什麼會這樣呢
這可能是工作路徑的問題,如果你執行程式的時候是點按鈕不是自己打的命令,可能會有這個狀況,你可以改用 modules 資料夾的完整路徑試試看。
請問老師, 輸入以下程式執行後, import geometry會自動跑到第一行, 導致執行錯誤. 看了滿多留言有相同狀況, 但是不知道該如何解決, 使用VScode
import sys
sys.path.append("modules")
print(sys.path)
print("----------------------------")
import geometry
print(geometry.distance(1, 1, 5, 5))
找到設定修改的方式, 在setting-->format on save mode. 原本的預設選項是file, 改成modifications, 這樣儲存後import geometry就不會亂跑了.
很高興你找到設定的地方,也感謝你的分享,這個對很多人一定有幫助 :)
最近才看老師影片學,但在打搜尋路徑時,發現都照老師的方式操作,但倒數第二航被偵測有問題,請問除了用除錯器外,還有甚麼辦法
我自己會根據錯誤訊息去找出原因,再 Google 看看找辦法處理嘍
老師您好:
謝謝你的詳細教學,讓我在學習python上有很大的幫助!
想請教一個問題~在命名模組名稱上有什麼符號限制嗎?
因我將老師命名的geometry 命名為11_geometry
geometry
不過我在載入模組時 (import 11_geometry),顯示錯誤資訊為invalid decimal literal
不曉得是不是模組命名時有些符號限制想跟老師確認,謝謝!
英文、數字和底線,但第一個字不能是數字哦 ~~~~
感謝彭彭老師的教學, 不知道為什麼在新增路徑後 import geometry 顯示錯誤, 但程式可以運行。
程式可以運行基本就沒問題。
你看到的應該是 pylint 這個擴充套件的建議,可以不用理會無所謂 ~
@@cwpeng-course 謝謝
#新手發問 不好意思想請教一下,可能是前面教學有忽略掉了,彭彭老師是怎麼一次把多行的程式加上"#"呢 ?
另外程式最後都有順利執行,可是Visual Code提示→ "Unable to import 'geometry'" ,都是我依然執行是成功,而且有值的,為什麼會這樣呢?
回答你第一題 想要一次多行標註"#"
使用CTRL+Z 或是 CTRL+/
第二題: 因為在編輯環境下, 是找不到 geometry 這個檔案, 因此 VSCode 會有警告
感謝 @Stephen Huang 的說明 :)
訊息是一個叫做 pylint 的擴充套件給的,他會協助偵測錯誤,但不一定總是正確,還是要自己判斷哦,也可以把擴充套件移除。
這裡要改成from 目錄.功能 import 功能
感謝分享 ~
老師您好,最近剛接觸Python,想請教一個問題
前一篇教學中提到無限參數(參數1, 參數2, ...)在進到函式時會自動將多個參數以tuple形式處理
想請問要怎麼把在其他位置得到的tuple後引入模組,將tuple中的數值當作參數代入模組中呢?
比如說我建立了一個模組M,定義一個計算n個數(無限參數)中的中位數的函式F
之後我再建立另一個程式A,能將使用者輸入的n個數由小排到大建立成tuple,有了tuple之後我想直接在A中import模組M,把得到的tuple裡的數代入函式F中計算中位數
這是有辦法做到的嗎?還是只能逐筆資料輸入呢?謝謝
有哦,既然你的程式 A 都已經把使用者輸入建立成 Tuple 了,你的 F 就不用無限參數了,用單一參數接收這個 Tuple 就好。硬要用無限參數的話,就是參數 (Tuple 型態) 中的第一筆資料是你在程式 A 中建立的那個 Tuple
老師好,請問老師要做import的話可以用其他編譯器嗎?(例如Jupyter)還是比較建議下載visual呢?
謝謝
我會建議不要特別使用 Jupyter 這樣的套裝工具,甚至移除會更好。
直接使用單純的核心 Python 引擎加上 VS Code 就很好。VS Code 只是一個單純的編輯器,沒有和程式環境綁在一起。
@@cwpeng-course 我就是用jupyter然後在這邊最後一部分跑module的時候無法執行XD也沒辦法分資料夾...可以請老師幫我看看是什麼問題嗎?謝謝~(程式碼如下)
=======我是分隔線========
#建立geometry模組,載入使用
import modules
sys.path.append("modules")
result=geometry.distance(1,1,5,5)
print(result)
result=geometry.slope(1,2,5,6)
print(result)
#在geometry模組中定義幾何運算功能
#計算兩個點的距離
def distance(x1,y1,x2,y2):
return ((x2-x1)**2+(y2-y1)**2/0.5)
#計算線段的斜率
def slope(x1,y1,x2,y2):
return (y2-y1)/(x2-x1)
老師可以問一下嗎?py的自訂模組有一定要放哪個資料夾嗎? 如果我同時有spyder跟IDLE及anaconda系列的編輯器我自訂模組的資料要放哪比較好呢?
如果你有多個環境,首先要確認你執行 Python 的時候使用的環境是哪一個,然後看那個環境會如何去找尋模組的位置。
@@cwpeng-course 謝謝老師 那模組的資料夾名稱會是什麼?
@@Letme-p8b 每個環境都不同哦,甚至每個作業系統都會有差異,你可以用以下程式去看到你的環境會去那裡搜尋模組:
import sys
print(sys.path)
老師,想請問在最後的調整路徑時,
打完跟老師你一樣的程式可以執行,
可是存檔後import的底下會一直出現紅色波浪,
這該怎麼解決呀~謝謝
可能是你安裝了一個叫做 pylint 的擴充套件,會協助你檢查程式但不一定正確,可以在 VS Code 的擴充套件管理中,把他移除就可以。
@@cwpeng-course 謝謝彭彭老師的回應!那我再移除他
謝謝,老師讓我受益良多
棒棒!不客氣 :)
老師請問我想要在
n=int(input("請輸入數字: "))
這個程式裡面連續輸入多個數字
數字多少由使用者自己決定
這樣該怎麼打才好?
可以這樣寫n1,n2,n3= int(eval(input('輸入三個')))
感謝 @Brian Hacker 的回應 :)
list1 = tuple(map(int,input().split()))
後來找一找在網路上發現好東西了!!
老師你好
import sys
sys.path.append(‘modules’)
print(sys.path)
import geometry
print(geometry.distance(1,1,5,5))
可以正常執行,但是problems那邊會顯示Unable to import geometry’ pylint(import-error) [11,1]
程式可以正常執行就沒問題喲。
那個錯誤是來自一個叫做 pylint 的擴充套件,他會幫忙檢查可能的問題但不一定正確,所以參考就好 ~
請問彭彭老師
為什麼我已經打了sys.path.append("modules")
仍然沒辦法import geometry模組
反而我沒有打
sys.path.append("modules")
我打
import modules.geometry
print(modules.geometry.distance(1,1,5,5))
才沒有問題!
這可能得看看你的程式在資料夾中的結構和執行時的命令才有辦法判斷原因了 ~
老師您好 想請問一下
在最後一部份的教學搜尋路徑那邊
我打了 import sys
print(sys.path)
為甚麼會出現無法打開資料夾的問題呢? 他寫說can't open file 'C:\datatype.pyy\mudule.py': [Errno 2] No such file or directory
我是跟著老師第一部影片學的 除了專案資料夾名稱不一樣以外(老師是用python-training我用datatype.pyy) 我是存在我的本機C槽內
但是後來跟著老師把模組移到新資料夾中 再次import geometry 就沒有打不開資料的問題了 請問是為甚麼呢?謝謝老師
我有同樣的問題
若是有移動程式檔案的狀況,會造成路徑無法正確找到對應的模組。除非你把模組一起移動,保持同樣的相對性。
老師你好,想問一下, 在新增檔案modules之後, 自動產生__pycache__跟.vscode 是正常的嗎
正常的哦,他只是讓後續的執行更有效率,移除也沒關係 ~
彭彭老師好,請問一下:
我輸入和這堂課最後面一樣的程式碼,結果跑出來也是一樣,但是其中第二個import系統卻顯示有異常,
向您請教一下這是什麼情形呢?
drive.google.com/file/d/1PXI6JKXVFFZiLZIe9HfB0ON9PpxZ35Qw/view?usp=sharing
這是縮網址 : ppt.cc/foroWx
你的程式執行正常。
只是你可能不小心安裝了 pylint 這個檢查工具,但是沒有適當的設置好,所以他會誤報。
可以在擴充套件中移除 pylint 這個東西。
原來如此,謝謝彭彭老師
感謝彭彭老師,照著做時我也遇到了,處理方法是import modules.模組名稱即可
請問老師,在這一節中小弟有個問題請教,1,感覺模組跟函式很像,但分不出區別,主程式中也可以直接呼叫函式,主程式中也可載入模組及使用(裏面也包含函式),小弟容易搞混掉函式和模組。我怎麼理解成模組是程式中的程式,感覺函式反而比較像模組。我理解錯誤嗎?我是新人。
模組是額外的 Python 程式檔案,從主程式載入利用。
函式是程式中的一個子程式區塊,透過函式的名字做呼叫。
盡量避免從中文字面去理解,就只是兩個名詞代表兩種東西。
對 Python 來說,模組就是模組,函式就是函式。直接觀察程式運作的實際狀況,來區分兩者的差異。
請問老師,常用的input(),print()這兩個是內建函式還是內建模組?
老師好 請問上完這堂課 在visual studio code 出現了 geometry.cpython-38.pyc的檔案 請問這是什麼呢?
那是一個快取,可以讓你第二次執行的速度變快,隨時可以刪除不會影響太大哦 ~
想請問老師
1.模組的檔名開頭是否不能為數字
因為我將檔名取為"11geometry" 在載入模組時會出問題
2.為甚麼將模組移到資料夾搜尋路徑就找不到?我以為那個路徑是電腦定位出來的,照理講不應該一移進資料夾時,模組本身的路徑就會改變嗎?既然如此,那為何又要手動改變路徑?
1.對阿不能為數字,最好也不要有Python內建的字元,像是list或print之類作為檔名
2當你創了新資料夾時,他的設定就是要你手動改變路徑徑
感謝 @Leo Wu 詳細的說明 :)
寫謝您的課程影片,請問一些,我想加入您的會員,但我沒有一些的信用卡,只有銀行的存摺,無法用來付款,請問是否有可以用手機付款的方式,感謝您,課程讓我有進入學習的收穫。
感謝你願意支持,不過這個會員系統是依賴 UA-cam 的機制,我們頻道經營者沒有太多控制力,所以可能就沒辦法了,不好意思 ~
還是感謝您的教學影片,令我收益良多
老師您好
請問該如何像 08:33 那樣 一次多行加上#字號呢?
好像上一堂課有提到 ,框取想加註解地方, Ctrl+/。當然也可以將被註解的地方用此方式取消註解。
感謝 @余金龍 協助回應 :) 是這樣沒錯哦 ~
按照方法添加路径后,terminal测试正常运行,但是problems显示有一个问题,是找不到geometry这个模组,检查过都对,程式也正常运行,但是就是problems一直显示有1个问题。这种情况是什么地方出了问题?
那是编辑器的扩充套件提供的侦错功能,但不一定精准,还是以程式能否顺利执行为主要依据
請問老師,使用Jupyter要如何把自訂模組給輸入進去? 在這之前我嘗試過google上面所提供的方式,但都沒辦法把模組輸入進去
說實在我和 Jupyter 不太熟,所以幫不上忙哦 ~
想請問老師,要怎麼把一段code同時加上#變成註解。只看到老師反白code,但不知道老師鍵盤是輸入什麼快捷鍵。
(因為我是跳著看老師的教學影片,所以可能老師前面有介紹但沒聽到,不好意思)
你可以按 ctrl+/
@@cwpeng-course 非常謝謝老師的回覆!
請問完全照著老師的方式寫程序,模組卻無法使用是為什麼呢?已經重新安裝好幾次了,安裝的時候PATH那邊也有打勾,從天黑試到天亮還是不知道問題在哪:O同樣程式用Spyder跑得出來~
模組無法使用可能和安裝沒有太大關係,主要得確認執行的工作路徑,以及 sys.path 中的設定。
如果曾經安裝過其它 python 相關的工具例如 Anaconda 可能會有些衝突,可以移除後試試看 ~
老師您好:
import sys
sys.path.append("modules")
import modules.geometry
print(modules.geometry.distance(1,1,5,5))
#geometry前面是不是應該要加上modules才跑得出來啊?
如果是你這個寫法的話,對哦,是這樣沒錯 :)
請問老師
import sys
sys.path.append("modules")
print(sys.path)
中間這段的意思?
將 modules 這個資料夾加入 Python 搜尋模組的路徑列表,接著把這個路徑列表印出來 ~
彭彭老师你好 我想问一下,我的电脑明明是win 64位操作系统,为什么印出来的是win32
那只是 Python 自己定义的系统代号,无论是 Win 64 或 Win 32 都会显示 Win 32,倒不用特别在意 ~
剛剛在練習時一直發生錯誤無法執行geometry的函式,後來發現原來資料夾命名不能加空白....
在此問老師一個問題,sys.path.append是sys本身提供加入路徑的方法嗎,
還是說如果我寫成 隨意檔名.path.append,會有一樣的效果?
不能寫成隨意檔名哦,是系統的模組定義的方法。
@@cwpeng-course 了解 謝謝老師
想請問老師,我有新增了modules的路徑,之後在terminal也有跑出結果,但是problem欄出現Import "geometry" could not be resolved,想請問要怎麼解決?
程式可以執行就沒問題哦。那個訊息是來自一個叫做 pylint 的檢查工具,會給你建議但不一定準確,也可以從擴充套件中移除它。