彭彭老師您好,想請教一個問題! 我把先前上課產生的py檔案也像您一樣,放入新增的backup資料夾中,但想點開復習時,發現執行的時候會出現如下的錯誤,C:\Users\user\AppData\Local\Programs\Python\Python38\python.exe: can't open file 'loop.py': [Errno 2] No such file or directory,看字面上的意思,似乎只搜尋了C槽的路徑,所以找不到放在D:\\Python training\\backup的檔案。當我把這些py檔案移出backup資料夾至原先的python training下,則又可以正確運行。難道在主程式跟在資料夾內執行所搜尋的路徑是有差別的嗎??
老師好!想請問執行main.py出現以下的問題 Traceback (most recent call last): File "D:\python-training\main.py", line 1, in import geometry.point ModuleNotFoundError: No module named 'geometry' PS D:\python-training>
老師好,能請問我無法順利執行,跳出 PS C:\Users\USER\Desktop\python\backup> python main.py C:\Users\USER\AppData\Local\Programs\Python\Python312\python.exe: can't open file 'C:\\Users\\USER\\Desktop\\python\\backup\\main.py': [Errno 2] No such file or directory
老師我想要問一下,就是當之前舊資料都移到backup之後 我如果執行之前的module.py 就是在terminal 打python module.py會出來python: can't open file 'backups.module.py': [Errno 2] No such file or directory 請問還要加打或是漏哪些東西呢?
想請問在建立封包資料夾時我使用geo這個名稱,內部也有建立__init.py和point.py,卻在import geo.point時跳出"execution_count" : null NamaError:name 'null' is not defined 使用的編輯器是Jupyter notebook,想了解是發生什麼問題呢
請問老師 我發現放到backup 資料夾的 .py 無法執行,我覺得因為backup資料夾不在搜尋路徑裡(影片11載入模組有提過),所以我在backup資料夾裡的檔案第一行就打 sys.path.append("backup"),執行時卻跑出[Errno 2] No such file or directory,, 請問要怎麼解決?
請問老師,我將之前課程的py檔案放到backup資料夾後,就無法執行了 系統顯示:can't open file 'E:\\python-training\\start.py': [Errno 2] No such file or directory 我現在檔案位在E:\\python-training\\backup 請問這需要怎麼修正??
老師,我把過去課程都丟進去backup但是main.py都不能執行,顯示Traceback (most recent call last): File "main.py", line 3, in result=geometry.point.distance(3,4) AttributeError: module 'geometry.point' has no attribute 'distance,請問是為甚麼?
Traceback (most recent call last): File "main.py", line 3, in result=geometry.point.distance(3,4) AttributeError: module 'geometry' has no attribute 'point' 我稍微改一下存放位置 然後問題就變成上面這個了。。。
老师我想问一下为什么我的不显示,没有出错啊 Traceback (most recent call last): File "main.py", line 2, in import geometry.point ModuleNotFoundError: No module named 'geometry' macdeMacBook-Air:P mac$
把main.py改到backup資料夾,即使終端路徑正確也無法執行 為甚麼呢? 會出現 Traceback (most recent call last): File "main.py", line 2, in import modules.geometry ModuleNotFoundError: No module named 'modules'
老师我請問 :c:\Users\jackson li\AppData\Local\Programs\Python39\python.exe: can't open file'c:\Users jackson li\Desktop\datetype.py':[Erro 2]No such file or directory 該怎麼解決?
超級感謝老師的講解,一直在網路上找關於python架構,突然發現這裡竟然有如此完整的教學影片,真的受益良多
很高興對你有幫助 :))) 也謝謝你的回饋 ~~~~
非常感謝彭彭老師,受益匪淺。PS.聼老師的課是可以開1.5倍速度的,這樣不會睡着。
哈哈哈,我的朋友說應該要兩倍速 XDDD
很喜歡這系列課程,謝謝你
不客氣,謝謝你的回饋 :)
100分, 簡明扼要
感謝 ~
謝謝彭彭老師的課, 明白了如何建立整個結構! m(_ _)m
讚哦!
感謝彭彭老師,非常細膩完整的教學!!!!!
不客氣,加油 :)
謝謝作者的製作。
:)
我發現如果你沒有打__init__.py
但你還是import他的話
系統會自動幫你建立一個__pycatch__.py的檔案
不知道是不是新版的新功能,我是載3.8.3 64bit的
但,我不確定這樣算不算是一個封包?
算哦,最新版的 Python 可以接受不特別加 __init__.py 這個檔案 ~
我也正想詢問這個問題,我是使用3.7.8,試完老師所教的以後好奇如果沒有使用__init__.py檔案會如何,結果沒差別,不太確定是不是新版以後就不用放 __init__.py檔案就可以傳送封包
@@tonylin6180 难怪
乾蝦彭彭老師無私講解🥰
感謝回饋,希望有幫助就好 :)
老師 謝謝 努力學習中
加油 :)
彭彭老師,想請教您影印4:29
左邊的back up folder 裡面的資料,原本是在python-training 路徑裡面的文件,後來您這堂課把資料移到back up後,我要跑裡面的程式,PS D:\python-training> python set-dictionary.py
C:\Users\user\AppData\Local\Programs\Python\Python39\python.exe: can't open file 'D:\python-training\set-dictionary.py': [Errno 2] No such file or directory
跳出以上這個文字; 用了您這堂課教的import sys 也無法叫出來,除了把文件移出backup folder還有什麼方式可以執行程式嗎?
這個和工作目錄的概念有關係,你可以透過 cd 這個指令切換工作目錄到 backup 資料夾再執行程式。但這個概念比較複雜,要額外學習,所以我在教學中不會特別提到 ~
謝謝彭彭老師
不客氣呦 ~
不太明白封包的意義。其實將需要的模組放在同一資料夾中,然後新增該搜尋路徑是不是一樣效果?
你的解法也不錯,只是程式中就只剩模組的名字,還可能和別的模組名字衝突。
若有封包,還會加上:封包的名字.模組的名字。就可能出現 pk1.my_module 和 pk2.my_module 這樣的配置。
工具就只是工具,要不要使用,就看每個開發團隊的喜好了。
我看完影片也有同樣疑問,感謝施主有問過這個問題XD
受益良多,謝謝彭彭老師
不會,有幫助就好 :)
這跟加入捷徑,sys.path.appends比起來有甚麼差異嗎?
我能想到的是加入路徑的話當執行程式時,系統就會到所有的路徑下去找檔案,同時也得注意檔名不能重複,以及路徑的優先順序的問題。
所以是不是使用模組的方式的話,這樣就不用再加入路徑,能讓系統效能比較好?
另外模組必須放在路徑之下對吧?
加入路徑,讓系統可以從既有的路徑中去搜尋模組,但模組可能也會想用封包進一步去分門別類,估計就是這樣。
很好的教程
謝謝 :)
教得很好 謝謝老師。
也謝謝你的回饋呦 :)
老師您好,謝謝您的Package封包教學,我想請問關於一些進階用法,在於main.py 如果我需要打包成exe執行檔,在於main.py打包成exe執行檔中是否也需要將使用packages使用的module 在main.py 一併引入 如import pandas 等進行封裝呢?
彭彭老師,就是我想問一下,這個視頻里,把所有以前的文件放到了backup裏面,但是當我運行上一個視頻里的那個module時候,又顯示路徑不存在,然後我就加了個backup的路徑,還是錯誤,遇到這種情況,應該怎麼辦呢
執行時的命令是對應到檔案的路徑,所以如果在同一個資料夾下可以直接打檔名:python 檔案名稱,如果有子資料夾,就要加上資料夾名稱,例如:python 資料夾名稱/檔案名稱,這樣去執行。
老師好,想問一下
上支影片有教到用sys模組新增路徑列表的搜尋路徑
如果直接import geometry.point
是不是就不需要用到sys模組去新增geometry資料夾的搜尋路徑呢
對哦,那就會以執行的資料夾為基礎,去看待模組所在的相對位置。
@@cwpeng-course
老師您好
同上 想詢問模組相對應位置
上支影片提到 要新增sys的搜尋路徑尋找模組
那因為我們新增一個資料夾放置模組
是因為有多增加__init__.pay這個程式才不用新增路徑 還是是因為 有import “geometry.line”這個動作才告知封包在哪讓程式不用在路徑列表中尋找?
重新復習更清楚架構了
嗯嗯嗯 :)
老師你好,想請問
1. 不是封包,就例如你的backup資料夾,放在一起有什麼用?
2. __init__ 的PY是不是不用管,一直存在,什麼都不用寫coding就可以?
3.與同事分工,假如有30個py, 就要import 30次?
1. 我的 backup 只是拿來整理檔案而已,沒有其他用處。
2. 新的版本,確實可以不用管。
3. 對,但可以檢討程式包裝的顆粒度,不一定要分得那麼細。
彭彭老師您好,想請教一個問題! 我把先前上課產生的py檔案也像您一樣,放入新增的backup資料夾中,但想點開復習時,發現執行的時候會出現如下的錯誤,C:\Users\user\AppData\Local\Programs\Python\Python38\python.exe: can't open file 'loop.py': [Errno 2] No such file or directory,看字面上的意思,似乎只搜尋了C槽的路徑,所以找不到放在D:\\Python training\\backup的檔案。當我把這些py檔案移出backup資料夾至原先的python training下,則又可以正確運行。難道在主程式跟在資料夾內執行所搜尋的路徑是有差別的嗎??
程式放在哪個資料夾確實是有差別的,所以在使用 VS Code 的時候,必須先打開我們要工作的資料夾。
老師好!想請問執行main.py出現以下的問題
Traceback (most recent call last):
File "D:\python-training\main.py", line 1, in
import geometry.point
ModuleNotFoundError: No module named 'geometry'
PS D:\python-training>
把程式放進backup後
要改寫成python backup\檔案名.py才能叫出
那為什麼原本放在python training資料夾中的檔案就不需要額外加註資料夾路徑呢?
我們有一個開啟專案資料夾的動作,這個動作會讓 VS Code 的環境以這個專案資料夾為基準去尋找要執行的檔案在哪裡,所以如果檔案放在專案資料夾的根目錄,就不用另外加資料夾的名稱。
老師您好,所以封包的方式是否可以解決每加一個分類資料匣就要用sys.path.appends去改變搜尋路徑的問題?另封包中的封包,是否也要__init__.py?(雖然看其他留言有提到不強迫要有了)
很佩服老師,幾百則留言真的五花八門
請問彭彭老師,使用封包為什麼不需要像上一集還須設定路徑 sys.path.append("geometry"),就可以執行了呢?
封包名稱就是對應到資料夾,我們的資料夾位置確實就放在專案資料夾的根目錄,所以不用再特別加路徑到 sys.path 中
@@cwpeng-course 謝謝老師
很棒的教學!受益良多,想請問當geometry資料夾底下有多個模組,要如何一次導入全部
這個得去調整 __init__.py 中的內容才行,調整後你就可以使用 from geometry import * 來做這件事情,你可以參考:
stackoverflow.com/questions/1057431/how-to-load-all-modules-in-a-folder
@@cwpeng-course 感謝回復!問題已解決
很喜歡老師的講解,概念原理都講得很清楚,感覺封包的概念與另一個模組 virtualenv 很類似,但又有點不一樣,請問老師可以另外拍一集影片講解 virtualenv 的用法嗎?謝謝!
原始的概念是一台電腦就是一個 Python 環境。但後來有一種需求是希望每個專案都有自己獨立的環境,所以延伸出在一台電腦中建立 Python 虛擬環境 virtualenv,就可以建立多個,在這個虛擬環境中有自己的套件安裝、系統設定等等。
點到優秀課程頻道的第777的讚^_^
哈哈哈,祝你新年一切順利 XDDDD
老師您好,我將dic.py放進backup裡面(此時還沒有建立__init__.py),無法運作dic,將它拉出來可以運作,請問是缺少什麼指令嗎?
還有非常謝謝您的教學,很清楚~
可能只是檔案路徑問題,程式檔案放進不同資料夾中,執行的時候就必須加入資料夾的名稱
例如:python backup/dic.py
@@cwpeng-course 原來如此,感謝!
感謝老師
老師好,能請問我無法順利執行,跳出
PS C:\Users\USER\Desktop\python\backup> python main.py
C:\Users\USER\AppData\Local\Programs\Python\Python312\python.exe: can't open file 'C:\\Users\\USER\\Desktop\\python\\backup\\main.py': [Errno 2] No such file or directory
老師你好,我將舊資料放在back up,我開啟上次課程的module資料時卻無法使用「module資料夾內的模組」,我該如何讓Back up 裡面資料加入 modules資料夾內的模組使用?
還是 主程式.py 要在 專案資料夾「python」內才能使用封包資料夾內的資料?
- Python
- back up
- module <該程式內的可以載入geometry模組嗎?
- modules
- __init__.py
- geometry(內包含上期所學distance,slope)
以下是錯誤代碼,我詳看留言爬文實在不是很了解。
Traceback (most recent call last):
File "S:\PYTHON_LEARN\backup\module.py", line 8, in
import modules.geometry as geometry
ModuleNotFoundError: No module named 'modules'
謝謝老師提供優良教學,再麻煩老師幫忙解答謝謝您。
要看一下你實際執行的命令是什麼,主要的工作路徑必須保持在 python 的資料夾這邊,不能切換到 backup 裡面。
感謝老師的教學~ 一如往常的收穫良多~
這次聲音還是很小聲聽不太到><
# 封包(package)的使用
# 封包:包含模組的資料夾 用來整理、分類模組程式
# 建立封包
# 專案檔案配置
#-專案資料夾
#-主程式.py
#封包資料夾
#-__init__.py (有建立這個程式,這個資料夾就會被當成封包來看待 兩個底線init兩個底線.py)
#-模組一.py
#-模組二.py
# 專案檔案配置範例
#-專案資料夾
#-main.py
#-geometry
#-__init__.py
#-point.py
#-line.py
# 基本語法
#import 封包名稱.模組名稱
#import 封包名稱.模組名稱 as 模組別名
# 主程式
import geometry.point
result=geometry.point.distance(3,4)
print(result)
import geometry.point as x0
result=x0.distance(3,4)
print("距離: ",result)
import geometry.line
result=geometry.line.slope(1,1,3,3)
print("斜率: ",result)
import geometry.line as line
result=line.slope(1,1,3,3)
print("斜率: ",result)
好哦,感謝你的回饋 :)
把過去程式裝入 back-up資料夾 (back up 是自己取的,可以隨意取 例如:abc or DDD)
感謝補充說明 :)
老師我想要問一下,就是當之前舊資料都移到backup之後 我如果執行之前的module.py 就是在terminal 打python module.py會出來python: can't open file 'backups.module.py': [Errno 2] No such file or directory 請問還要加打或是漏哪些東西呢?
封包和模組,和你的專案資料夾、命令列工作路徑的配置是有相關性的。所以其實不太能隨意地移動。
你的錯誤,代表 python 根據目前的配置,找不到程式檔案。這得要查看程式碼的細節、資料夾的配置和工作路徑的狀況,比較有辦法找到實際的問題是什麼。
老師好:所以在上個影片中的 modules 資料夾,若有加上 __init__.py 的檔案
就不需要特地 sys.path.append 了對嗎~
是的,但那個資料夾會變成封包的概念。
想請問在建立封包資料夾時我使用geo這個名稱,內部也有建立__init.py和point.py,卻在import geo.point時跳出"execution_count" : null
NamaError:name 'null' is not defined
使用的編輯器是Jupyter notebook,想了解是發生什麼問題呢
你程式中使用了 null,而 null 這個名字在你的程式中沒有被定義 ~ 表面上是這個意思,但實際上得看看你的程式碼才知道發生了甚麼事情 ~
老師我想請問一下在上支影片中,我沒有使用sys.path.append這個步驟,而是直接寫modules.geometry,運算也會照樣執行,那這樣是使用封包的意思嗎?
是哦,剛好我們放在 modules 的資料夾,你要把他當成是封包的概念也可以 ~
彭彭老師,我把之前打的程式們像你一樣丟進backup資料夾後就無法執行了ㄟ,所以最後我只好又把它們拿回python放
為甚麼會這樣阿,我有想過會不會是sys.path沒有找backup資料夾的緣故,所以import了sys,也append了backup,但它還是無法執行程式,,,,,,
感謝 @Ian Jiang_ 的回應,確實要注意程式檔案所在的資料夾,以及終端機的工作路徑,這部份比較像是命令介面的操作和觀念,我沒有在影片中多說,但 @Ian Jiang_ 的回應很棒可以參考看看 :)
老師想請教下 import as 和 from import 的用法差異是在哪?看起來好像功能都一樣可以縮短名稱。謝謝......
import 模組名稱 as 模組別名
from 模組名稱 import 模組中的函式或變數名稱
大概是這樣,使用 from 可以直接將模組中的函式或變數名稱載入。
只用 import 會把整個模組一起載入。
基本上都可以使用,看情況方便就好 ~
了解,謝謝老師
老師好
我跟老師一起寫程式,碰到下面的問題
AttributeError: module 'geometry.point' has no attribute 'slope'
請問要如何處理
可能需要你的完整程式碼才有辦法判斷哦 ~
老師您好,我想請問一下為什麼開啟backup資料夾裡面的專案,
執行之後會出現[Errno 2] No such file or directory的錯誤題示?
還有這種錯誤該如何解決?
謝謝老師。
檔案移動到子資料夾,路徑會改變,所以你的執行命令會找不到檔案是正常的,移出來就可以了,或者在你的檔案名稱前面加上資料夾名稱
了解,謝謝老師
請問老師
我發現放到backup 資料夾的 .py 無法執行,我覺得因為backup資料夾不在搜尋路徑裡(影片11載入模組有提過),所以我在backup資料夾裡的檔案第一行就打 sys.path.append("backup"),執行時卻跑出[Errno 2] No such file or directory,, 請問要怎麼解決?
看起來是指執行的時候找不到程式檔案,和模組可能沒有太大的關連。
不知道你實際執行的時候,打的命令是什麼?
謝謝回復 :)
執行命令指示是很一般的 python function-args.py(檔名),檔名也無誤
我把螢幕截圖來解釋問題,可以讓老師比較清楚,麻煩看一下, 謝謝
imgur.com/Njv5Sbz
路徑的問題嘍,命令列的工作路徑是 d:\python training\。但是檔案在 d:\python training\backup\,我們之前是把程式檔案放在跟工作路徑一樣的位置,可以直接打檔名。
先不論程式有沒有寫對,如果要執行程式檔案,必須要打正確的路徑,包含資料夾:
python backup\function-args.py
這樣才會真的執行到程式哦 ~
彭彭的課程 問題解決,謝謝!,期待你下個影片!
thanks
:)
老師,我問一下,為什麼我把主程式放在一個資料夾內(像是你影片裡的backup),在封包時就沒辦法照著那路徑跑(就import無法用到geometry),但我單獨把主程式拉出來,就可以成功了。是跟每個資料夾是獨立的性質有關係嗎?
封包和資料夾的結構是有緊密關係的,所以隨便換資料夾在專案中基本上是不行。我只是把過去的教學放到 backup,真的要拿出來用我也會在確認資料夾結構和封包之間的關係 ~
@@cwpeng-course 老師好,如果把main.py放到backup資料夾,那main.py裡面import後面的寫法要改嗎?
我想請問一下
我把過去的資料都丟進backup
但是資料都無法執行
請問除了把他們再丟回原本的python的方法以外
還有讓他們在bcakup也能夠執行的方法嗎?
感謝各位高手
這背後牽扯到一些系統運作的觀念,所以不是單一動作可以解決的。
建議試著去了解命令介面,終端機「工作路徑」的概念。然後學習使用 cd 這個命令切換工作路徑,把工作路徑切換到 backup 可能就有機會成功嘍 ~
@@cwpeng-course 好的 謝謝 講解的真的很詳細 :)
可以試試 python backup\"之前的程式".py
def distance(x,y):
return ((x**2+y**2))**0.5
def len (x1,y1,x2,y2):
return((x2-x1)**2+(y2-y1)**2)**0.5
def slope (x1,y1,x2,y2):
return (y2-y1)/(x2-x1)
#主程式
import geometry.point
result=geometry.point.distance(3,4)
print("距離",result)
import geometry.line as line
result=line.slope(1,1,3,3)
print("斜率",result)
:)
我解決了,應該是geometry跟module這兩個程式搞混了路徑 我新開專案
就可以了,所以把之前的課程放到BACKUP裡面也是可以的,只是我試過
在BACKUP裡面的程式執行時會錯誤,要把移出來回原本python資料夾底下
才能執行,這樣對不對?
是哦,恭喜你解決問題!自己解決應該是很棒的體驗 :)
@@Justinian_Life sys.path.append("modules")->sys.path.append("backup/modules")就可以找到囉
老師您好!之前從這部影片和您一樣新增資料夾將先前檔案丟進去,但後來裡面的檔案都無法讀取,我知道可能是路徑的問題,想情問老師該如何解決此問題?
任何有檔案路徑概念的地方,都要一併考慮資料夾,有多一層資料夾就要寫:資料夾名稱/檔案名稱
原則上是這樣,實際上還要看你的資料夾配置,還有執行程式的位置來判斷可能的問題。
老師好,請問執行程式後,封包資料夾會跑出一個__pycache__的資料夾,請問那是什麼?
有何功用?
Python 幫你產生的快取資料,可以加快程式運作 ~
老師好 我想請教一下~
為什麼我在python-training下新增backup資料夾
將以前的檔案丟進去之後,以前的檔案都沒辦法正常執行了QQ
而且為什麼上次做完模組後 多了一個__pycache__的檔案夾?
程式檔案路徑變了,所以執行的時候會找不到檔案,需要的時候再拿出來就可以。
__pycache__ 是 Python 對封包處理的一個快取,讓下次執行會更快速,你可以隨時刪除它不會影響程式運作。
@@cwpeng-course 了解了 謝謝老師 不過想知道有沒有在移動到別的檔案路徑後 也能順利執行的方法嗎?
還是說其實要用的時候再拿出來比較方便呢?
再麻煩老師解答ㄌ!
請問老師,我將之前課程的py檔案放到backup資料夾後,就無法執行了
系統顯示:can't open file 'E:\\python-training\\start.py': [Errno 2] No such file or directory
我現在檔案位在E:\\python-training\\backup
請問這需要怎麼修正??
執行的時候要把資料夾路徑也打進去,例如 python backup/start.py
@@cwpeng-course 解決了,謝謝老師!
老師,我把過去課程都丟進去backup但是main.py都不能執行,顯示Traceback (most recent call last):
File "main.py", line 3, in
result=geometry.point.distance(3,4)
AttributeError: module 'geometry.point' has no attribute 'distance,請問是為甚麼?
資料夾和檔案結構會影響封包的結構,所以如果有移動過檔案到不同的資料夾,必須有對應的調整。
需要進一步檢查執行程式的位置,資料夾配置狀況,才有辦法判斷得更仔細哦 ~
@@cwpeng-course >backup
-geometry
> __pycache__
-__init__.py
-line.py
-point.py
-main.py
這有甚麼錯嗎?
你會不會把distance函式寫到line.py去了
老師好 如果把之前寫的主程式放在backup中,那當下次在終端機測試時會找不到,這個時候是不是要像上一個影片那樣:使用新增載入模組搜尋的路徑???
我的解決方法是修改新增的路徑 sys.path.append("modules")->sys.path.append("backup/modules")就可以找到囉
感謝 @阿飛 的分享,確認執行檔案和模組路徑相對關係是重要的事情,所以改變資料夾結構必須做相對應的調整 ~
#阿飛 謝謝你 我想問這兩行都要打出來嗎 還是上下是獨立的? (編程菜鳥😂)
詹耕銓 只要打修改後的那行code就可以了
我也是菜鳥,努力學習中🤣
阿飛 了解 謝謝
請問老師, 有沒有加__init__.py的檔案對程式執行有甚麼差別, 發現就算沒加__init__.py, 程式還是正常執行, 謝謝
早期的版本一定要加 __init__.py 才能夠變成一個封包資料夾,後來的版本如你所說的,可以不用加 ~
彭彭老師的課 深入潜出 謝謝彭彭老師
不客氣呦 :)
想請教一下老師
can't open file 'main.py': [Errno 2] No such file or directory
這是什麽意思?有解決辦法嗎?(試過sys.path.append,但還是不行)
Traceback (most recent call last):
File "main.py", line 3, in
result=geometry.point.distance(3,4)
AttributeError: module 'geometry' has no attribute 'point'
我稍微改一下存放位置 然後問題就變成上面這個了。。。
後面的問題是指 geometry 這個模組中,沒有定義 point,可能要看看 geometry.py 中的程式怎麼寫的嘍 ~
想問一下老師,封包的功能是簡略式子寫法嗎?
就好像不需要像上一個 影片,還需先告知路徑才能找到資料夾
我猜會不會是封包可能只能掃描同資料夾下的~
導入路徑可以導入其他更遠的地方?
感謝 @Chen Orion 的回應。
封包就是讓你模組化程式的一種工具,如果你有很多模組,可以歸類成一個更大的分類,就會想使用封包。至於路徑,只是讓 Python 去尋找模組或封包的位置,剛好我們的封包只要從專案路徑去找就可以找到對應的資料夾,就不用特別加入了。
老師 我程式都按照影片中的做,這無法執行的原因?
PS D:\python-taining> python main.py
Traceback (most recent call last):
File "main.py", line 3, in
result=geometry.piont.distance(3,4)
AttributeError: module 'geometry' has no attribute 'piont'
沒事了,我知道錯在哪了~
有解決就好 :)
我也遇到同樣的狀況,請問您如何解決?謝謝
@@i_am_fucking_busy 需要把 point.py 的程式處存 才可以進行檔案裡的函式
@@jameske119 謝謝您>
請問老師,我直接在函式檔案line.py裡想測試執行函式,打slope(1,1,3,3),可是卻跳出錯誤說無法打開檔案,找不到檔案。請問為何之前教函式時我可以在module.py裡執行,但現在教封包,卻只能回到主程式執行呢?
是需要新增搜尋路徑的關係嗎?但是我看留言的意思好像是用封包就能不用額外新增路徑,而且我也試了加sys.path.append(geometry),還是不行,麻煩老師解惑,謝謝!
執行程式的時候要加上資料夾路徑,例如 python 子資料夾名稱/程式檔案名稱
想請問老師,我在跑print("距離",result)的程式時,出來的結果“距離”會變成'\xe8\xb7\x9d\xe9\x9b\xa2'這一串,請問是什麼原因還有該怎麼解決?謝謝老師!
试一试是不是输入法有没有切换回英文,我刚刚就是这个原因
可能是版本的問題,確定有安裝 Python 3 新的版本之後,如果是 Mac 電腦,執行時使用:python3 檔案名稱
請問老師,如果要在專案一中使用專案二下的封包,不直接把封包移到專案一資料夾,而是透過建立途徑來達成,這樣可行嗎?建立途徑的方法也是使用 sys.path.append() 嗎?
是哦,可以 ~~~~
老师我想问一下为什么我的不显示,没有出错啊
Traceback (most recent call last):
File "main.py", line 2, in
import geometry.point
ModuleNotFoundError: No module named 'geometry'
macdeMacBook-Air:P mac$
程式找不到 geometry 模组档案,可能要确认看看你的档案名称哦 ~
@@cwpeng-course 谢谢老师!!!
讲的不错,能很好的懂
谢谢你的回馈 :)
請問老師,我記得之前的影片是說,len的用法是算出列表資料的長度,在這支影片卻是當函式名稱使用,請問這樣不會重疊到用法嗎?
我們在使用模組中的函式時,要先載入並加上封包和模組的名稱,然後才接函式名稱,像是 geometry.line.len(1,1,3,3) 這樣,所以和內建的 len 函式是可以分開運作的嘍 ~
@@cwpeng-course 可以geometry.line.len(1,1,3,3) as len嗎?
請問老師有log的解說嗎?如果沒有,可以解說一下嗎?謝謝🙏🏻
目前沒有,謝謝你的建議我會考慮看看的 :)
老師有機會開C++的課程嗎
有機會哦,不過讓我認真考慮看看,時間有點少呀 @@
請問那個init有必要嗎 我沒有加init 試了很多次都沒出錯
如果吧module 丟到其他檔案裡
程式也自動跑出 檔名.模組
以前是必要的,現在可以不寫沒錯。
把main.py改到backup資料夾,即使終端路徑正確也無法執行 為甚麼呢?
會出現
Traceback (most recent call last):
File "main.py", line 2, in
import modules.geometry
ModuleNotFoundError: No module named 'modules'
因為錯誤訊息是說找不到模組,所以要確認模組的程式是否也有一併的調整路徑 ~
老師好喔~
想請問影片中
[線段]計算後式小數點很多
我想取後兩位該怎麼寫入呢?
你可以用以下這樣的語法做輸出:
a=13.94655
print("%.2f" % a)
想請問如果沒有新增那個init會怎樣嗎?因為上部影片部也沒有新增,單依然可以import,還是因為先前的範例只有一個模組
單一的 Python 檔案,就只是一個模組,載入模組就和 __init__ 這個檔案無關。
請問為什麼我主程式第一行的geometry.point一直顯示有錯誤?
他顯示Import “geometry.point” could not be resolved
如果程式可以執行就沒問題,你顯示的錯誤可能是一個叫做 pylint 的擴充套件產生的,他會幫你偵測錯誤但不一定很精準。
import有寫出 (封包資料夾) . (.py檔) . (function)的話就不用擔心sys.path()找不到路徑了這樣嗎?
假如把 import geometry.point 改成 import point的話,是不是要在呼叫前先
import sys
sys.path.append("geometry")呢?
可以哦,不過那就沒有封包的概念,只是去 geometry 的資料夾中尋找模組檔案而已。
@@cwpeng-course 原來如此! 我了解了謝謝老師
感謝🙏
加油!
请问老师,如果我的两个 .py文件在不同的文件夹下,我试了添加module的路径,但是会报错,程序运行不了,这个该如何解决呢
这得看实际的错误讯息,路径设定,档案实际配置等细节才有办法进一步判断了 @@a
想問一下封包內再用更多子封包,這樣是主封包跟每個子封包內都要有__init__,py對嗎?
對哦 ~
说得真好,很容易懂,就是这一集声音有点小,我把音响都开到最大了
感谢你的回馈和建议哦,会多注意声音 :)
感謝老師~
不會呦,有幫助就好 :)
老師您好,我想問沒有封包會怎樣嗎?因為好像沒有封包也可以載入
不會怎麼樣哦,它就是一種讓我們可以切割程式碼、分類程式碼的工具,要怎麼使用是開發者的決定。
老師我打的時候一直顯示AttributeError: module 'geometry.point' has no attribute 'distance' 這樣要怎麼解決
我已經和影片中打的一樣了
以解決
恭喜解決 ~
請問還需要寫 sys.path.append("modules") 嗎?
如果按照影片中的資料夾和檔案結構配置,通常是需要的。不過也要看你的執行環境是否和我這邊是否有些關鍵差異 ~
我发现现在如果用from import 导入模组,就能直接使用模组名不用在前面加上档案名了耶,但是用import 档案名.module的话就得加档案名
老師那這樣跟上一堂教的,用append有甚麼差別呢?
上一堂課是設定 Python 會去搜尋的資料夾,封包則是在搜尋的資料夾底下,還可以建立封包資料夾的概念 ~
那個geometry只是單純的一個資料夾嗎 然後裏頭再新增我們所需之模組以及__init__.py
是,就只是一個資料夾,Python 的程式可以把這個資料夾認定成是一個封包以及底下的模組檔案。
想問一下老師為什麼放到backup的資料夾裡的程式不能跑了
理論上跟上一篇path路徑問題一樣~
你放到backup資料夾後~
已經不再預設sys裡面的path
感謝 @Chen Orion 的說明,很清楚 :)
老師 請問假如我把主檔案放到一個叫backup的資料夾,為甚麼程式會跑不出來呢?是找不到檔案的原因嗎?該怎麼解決呢?
import sys
sys.path.append("backup(你的檔名)")
接著再執行看看
@@Allen_wu7651 了解 謝謝您, 我再去試試
感謝 @Leo Wu 的說明哦 :)
不好意思,想請問一下
為何怎麼試都會跑出
ModuleNotFoundError: No module named 'geometry'
我嘗試更換名稱,也嘗試過新增搜尋路徑都沒有效果
網路上的解法都偏向於安裝python
但我從第一堂就是跟著老師的上法處理,所以應該沒有這個問題
所以想直接請教老師,問題到底出在哪裡
以下附上我執行時的錯誤截圖
希望可以得到老師的回覆,謝謝
i.imgur.com/xmCmSzu.jpg
@劉笠楊 您好,感謝提醒,但是修改錯字後,同樣會出現相同的問題無法執行
目錄結構不對哦,不能放到 "講義" 的資料夾下 ~
彭彭老師你好
想請問一下,若是使用jupyter的環境的話
要如何使用封包呢?
我自己沒有使用 Jupyter 這個環境,所以沒辦法給你太具體的建議哦,不好意思 ~
@@cwpeng-course 沒關係~還是很謝謝彭彭老師的教學
老师我請問 :c:\Users\jackson li\AppData\Local\Programs\Python39\python.exe: can't open file'c:\Users jackson li\Desktop\datetype.py':[Erro 2]No such file or directory
該怎麼解決?
錯誤訊息的意思是找不到你想執行的檔案,請確定按照這系列一開始的教學,先開專案資料夾,並且在 VS Code 中先打開專案資料夾,再執行程式。
請問pytest也可以建立package嗎~
我把我的測試檔拆解封裝成package
但出了問題 想問pytest是不是有他自己的封包設計方式~
說實在我沒用過 pytest,所以可能無法仔細地回答你的問題,不好意思 ~~~
@@cwpeng-course 不會~~ 謝謝大大的回復~~
哇,很好哇!
謝謝!
請問我照著老師說的打為什麼會出現
"geometry" is not accessed 呢?
ctrl+s儲存
已儲存還是有出現耶...
這要看你打的程式碼才比較能知道..
感謝 @James Chang 的回應 :) 確實要看看程式碼和資料夾結構才有辦法判斷哦 ~
謝謝回復~我的程式碼跟老師影片中的一模一樣耶... 程式run出來一樣會有與老師相同的答案,但在problems這邊一直會有這個問題...
改路徑之後才開始出現這個問題
還是跟python的般本有關係呢? 我的版本是3.9.5
嗨嗨!我剛好也在練習這個部分,我發現當我在一個專案先建立一個文字格式(string format())模組,並且在另外一個專案裡載入這個模組並執行它,執行出來的結果,一定會有一個"none",不知道是何源故?
因為沒定義回傳值,呼叫函式時用假設參數的方式呼叫,就不會有你說的問題了
感謝 @Leo Wu 的說明哦 :)
真的,感激不盡!
感謝老師,這樣更能理解封包的使用了~
很高興對你有幫助 :)
超級感謝老師的講解,一直在網路上找關於python架構,突然發現這裡竟然有如此完整的教學影片,真的受益良多
不客氣呦,很高興對你有幫助 :)
請問老師 如果使用Spyder寫程式可以做封包的動作嗎
應該可以,但我也不確定方法,我自己沒用過 ~
請問geometry為什麼不能換成try呢 無法使用Try當封包名稱
try 是程式語言的保留字 ( 不能用的名字 ),所以不能使用 ~
嘗試不加__init__他沒有報錯,但自動幫我加個檔案__pycache__
是新版的編譯器給大家偷懶嗎?還是該注意什麼呢,謝謝彭彭老師
新版的幫大家偷懶嘍 :)
@@cwpeng-course 謝謝老師回覆