Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

Unable to import Python module

未關閉
#757 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
3/5
預估耗時
1-2 天
新手友好度
35/100
Issue 類型
缺陷
描述清晰度
需要釐清
活躍度
冷清
技術堆疊
python
領域
tooling

研究方向

從 LHIPA.py 和 issue 中顯示的 Julia 程式開始,接著在顯示的 PythonCall 環境中重現 ModuleNotFoundError。將回報的 sys.path 和已安裝的 distribution 與匯入嘗試進行比較;完成的標準是確認問題是由 PythonCall 還是模組/package 的匯入所造成,並記錄一個經過驗證的解決方案。

由索引模型根據 Issue 內容生成。

描述

question

To be honest, I'm a little perplexed at how this is failing.

For a background, I need to import a python file that I wrote and is stored in the local directory (LHIPA.py). That file, in turn, needs to import PyWavelets, which has been installed in the .Condapkg environment. I have confirmed in my Julia program as well as in the python file that it is using the python environment created by PythonCall.jl. I've also confirmed, in the Python program, that PyWavelets is an installed package, yet I get this error message: ERROR: Python: ModuleNotFoundError: No module named 'pywavelets'

First the Julia program as well as its output:

...

ENV["JULIA_CONDAPKG_BACKEND"] = "Null"
ENV["JULIA_PYTHONCALL_EXE"] = raw"/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.11'"

using PythonCall
println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
println("\n PythonCall is using", PythonCall.python_executable_path())
println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

 pth = (@__DIR__)        # Path where the python routines are
 pyimport("sys").path.append(pth)  # append path

println("sys.path = ", pyimport("sys").path)
println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
println("ENV['JULIA_CONDAPKG_BACKEND']  = ", ENV["JULIA_CONDAPKG_BACKEND"] )
println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
println("ENV['JULIA_PYTHONCALL_EXE']  = ", ENV["JULIA_PYTHONCALL_EXE"] )

LH = pyimport("LHIPA")

And the output looks as expected:

PythonCall is using/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/bin/python
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys.path = ['/Users/MattPetersonsAccount/.julia/packages/PythonCall/83z4q/pysrc', 
'/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python311.zip', 
'/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.11', 
'/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.11/lib-dynload', 
'/Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.11/site-packages', 
'/Users/MattPetersonsAccount/Documents/Development/PsychoPy/Spatial n-back 2']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ENV['JULIA_CONDAPKG_BACKEND']  = Null
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ENV['JULIA_PYTHONCALL_EXE']  = /Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default/lib/python3.11'

The Python file, LHIPA.py, looks like this:

from platform import python_version
print("LHIPA python version is: ",python_version())

import importlib_metadata
dists = importlib_metadata.distributions()
for dist in dists:
    name = dist.metadata["Name"]
    version = dist.version
    print(f'found distribution {name}=={version}')
import sys
print("\n",sys.prefix,"\n")

import math
import PyWavelets

And again, the output is as expected:

LHIPA python version is:  3.11.0
found distribution setuptools==82.0.1
found distribution wheel==0.46.3
found distribution importlib_metadata==8.7.1
found distribution pip==26.0.1
found distribution packaging==26.0
found distribution numpy==2.4.4
found distribution PyWavelets==1.9.0
found distribution zipp==3.23.0

 /Users/MattPetersonsAccount/.julia/environments/v1.11/.CondaPkg/.pixi/envs/default 

So, I've confirmed that Julia and Python are using the same environment (unless one of them is reporting incorrectly, or there is an error in front of my eyes I am missing) and I've confirmed that PyWavelets in the Python environment. Yet, I get an import error.

Any ideas? Is there something blatantly obvious that I'm missing?

主要語言
Julia
星號
1.1k
分支
89
平均合併
2 天 15 小時
30 天內合併 PR
7

環境準備

這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

JuliaPy/PythonCall.jl 的其他 Issue

查看 JuliaPy/PythonCall.jl 的全部 Issue

相似的 Issue

更多 Julia Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。