无法通过 Pip 安装自定义 Python 包

Custom Python package is not accessible installed via Pip

我正在写一个 Python 包,这是我的文件结构。 simple_eda 是主文件夹,其中我有 init 文件和我的代码文件。在我的代码文件中,我有 Class SimpleEDA 来完成所有工作。导入我想使用

import SimpleEDA or from simple_eda import SimpleEDA

我的初始化文件是空的。

我已经使用这个命令为我的 simple_eda 构建了 whl。我在 setup.py 文件所在的主目录中使用了这个命令。

python3 setup.py sdist bdist_wheel

这在 dist 文件夹中成功创建了 whl 文件和 tar.gz 文件。所以我用了

pip 安装simple_eda.whl

然后安装包。所以我在我的终端中写 python 来激活 Python。我可以导入我的包用户

from simple_eda.simple_eda import SimpleEDA

但是如果我尝试在 Jupyter notebooks 中执行此操作,则会出现错误。

 from simple_eda.simple_eda import SimpleEDA

这是我的 setup.py 文件代码。

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="simple_eda", 
    version="0.0.1",
    author="Muhammad Shahid Sharif",
    author_email="chshahidhamdam@gmail.com",
    description="A wrapper around Pandas to perform Simple EDA with less code.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="my git link here",
    packages=['simple_eda'],
    install_requires = ['matplotlib==3.0.3','nltk==3.4.5',
'numpy==1.17.2',
'numpydoc==0.9.1',
'pandas==0.25.1',
'scikit-image==0.15.0',
'scikit-learn==0.22.2.post1',
'scipy==1.4.1',
'seaborn==0.9.0',
'spacy==2.2.3',
'spacy-langdetect==0.1.2',
'spacy-readability==1.3.0',
'textblob==0.15.3'],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.5',
)

我想像这样导入我的包

import SimpleEDA or from simple_eda import SimpleEDA

由于您处于 Conda 环境中,您似乎还没有为该环境安装 Jupyter。相反,您 运行 的 jupyter 可执行文件可能是全局安装的,而您的本地软件包是使用 pip 在本地(在 Conda 环境中)安装的。注意两个可执行文件的不同路径:

  • 木星:/snap/bin/jupyter
  • python3: $HOME/anaconda3/envs/eda_test_2/bin/python3

因此,只需为您的 Conda 环境安装 Jupyter,或者使用

conda install jupyter

pip install jupyter

旁注:由于您处于 Conda 环境中,因此您应该能够简单地使用 python 而不是 python3。一个只是另一个的别名。如果您在 OS 上 python 仍然是 Python 2.

,这可能在您的环境之外不起作用

问题似乎是 OP 有多个 conda 环境,并且软件包安装在一个 python 环境中,但 jupyter notebook 无法访问该环境。

要在多个conda环境中使用jupyter notebook,推荐的做法是在基础环境中安装nb_conda_kernels,然后在每个应该可用的环境中安装ipykernel(或其他语言内核)在 jupyter 笔记本中。

conda install -n base nb_conda_kernels
conda install -n MYENV ipykernel
jupyter-notebook  # Run this from the base environment

然后,导航到您的 jupyter 笔记本,将其打开,选择与您要使用的 conda 环境对应的内核,然后 运行 您的笔记本。

此外,要在特定的conda环境中安装自定义pip包,OP应该用他们的命令明确。例如,使用 python -m pip 而不是 pip 包装器。

conda activate MYENV  # or source activate MYENV
python -m pip install MYPACKAGE.whl

在 OP 的情况下,他们应该在任何有自定义包的环境中安装 ipykernel,然后在使用 jupyter notebook 时,他们应该使用该环境的内核。

相关:https://github.com/jupyter/help/issues/342#issuecomment-382837602