Python項目找不到自定義module

Pasted%20image%2020250408014336.webp
Published on
/
2 mins read
/
––– views

WHAT IS MODULE

module 模塊:module 是 python 中代碼重用的基本單元,一個 module 可以通過 import 語句導入到另一個 module。

module 分為:

  1. pure python module(純 python 模塊)
  2. extension module(擴展模塊)
  3. package(包)

報錯

報錯belike:

ModuleNotFoundError: No module named 'open_r1.rewards'

目錄如下:

Meth 1. setup.py

一般好的項目的根目錄會有這樣一個setup.py設置packagedir(和一些其他依賴等等):

from setuptools import find_packages, setup

setup(
    # 包名到目录的映射
    # ""表示顶层包
    # 映射到src文件夹
    package_dir={"": "src"},

    packages=find_packages("src"),
)
  • 全局性:通過 setup.py 腳本安裝包之後,Python 會記住這個包的安裝位置,後續在任何目錄下/任何 Python 進程中都能找到這個包(都能import)。

Meth 2. sys.path

import sys

sys.path.append('/home/zhangjie/openr1-gpu04/src')
  • 動態性:僅在當前 Python 進程運行期間有效。一旦 Python 進程結束,這個路徑設置就會失效。

Jupyter

在jupyter中運行代碼時,如果使用sys.path.append的方式添加路徑,儘量寫絕對路徑,因為即使你在項目根目錄運行某一子目錄下的ipynb文件,默認運行路徑不是項目根目錄而是ipynb文件所在的子目錄,這一點和普通py文件不一樣。

REF

← Previous postdocker未授權致RCE
Next post →機器學習基礎