在Anaconda环境中安装本地软件包

10

问题:我想在特定的conda环境中安装本地软件包。为了做到这一点,我阅读了当前的文档(python-packaging)。

软件包结构:

$ pwd
~/…/test
.
|- requirements.txt
|- my_package
|   |-- __init__.py
|   |-- base.py
|- setup.py

setup.py

# -*- coding: utf-8 -*-

import os
from setuptools import setup

with open('requirements.txt') as f:
    requirements = f.read().splitlines()

setup(
    name='my_package',
    version='2.0.0',
    author='B.Gees',
    author_email='B.Gees@gmail.com',
    license='MIT',
    packages=['my_package'],
    description='my package description',
    long_description='my package long description',
    keywords='chemistry machine learning cheminformatics',
    classifiers=[
        'Environment :: Console',
        'Intended Audience :: Developers',
        'Intended Audience :: Healthcare Industry',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.5',
        'Programming Language :: Python :: 3.5.5',
        'Topic :: Scientific/Engineering',
        'Topic :: Scientific/Engineering :: Bio-Informatics',
        'Topic :: Scientific/Engineering :: Chemistry',
        'Topic :: Scientific/Engineering :: Pharmacokinetic',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
    install_requires=requirements,
    zip_safe=False
)

requirements.txt

pandas==0.19.2
dill==0.2.7.1
cython==0.23.4

__init__.py

# -*- coding: UTF-8 -*-

"""
my_package
~~~~~~~~~~

my package full description

:copyright: (c) 2018 by B.Gees.
:license: MIT, see LICENSE file for more details.
"""

from __future__ import print_function
from __future__ import unicode_literals
from __future__ import division
import logging

__title__ = 'my_package'
__version__ = '2.0.0'
__author__ = 'B.Gees'
__email__ = 'B.Gees@gmail.com'
__license__ = 'MIT'
__copyright__ = 'Copyright 2018 B.Gees'

log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())

base.py

# -*- coding: UTF-8 -*-

def titi(x):
    return x**2

我使用以下代码将我的软件包安装在特定的conda环境中:

conda activate my_env
pip install . # In my package repository

然而,当我试图在jupyter笔记本中导入my_package时,我得到了以下错误:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-9-daa52839320b> in <module>()
----> 1 import my_package

ImportError: No module named 'my_package'

这个安装包在conda环境外使用python的pip安装正常。但我不知道如何在特定的conda环境中正确地安装我的包。请帮忙解答。
配置信息:MacOSX系统,conda3和python3.5,需要与Linux 7兼容。

你尝试过使用conda install my_package吗?你也可以在你的环境中使用conda search my_package来检查该包是否已经安装好了。 - C.med
对我不起作用 :/ - B.Gees
conda search my_package 的输出是什么? - C.med
包未找到错误:以下包在当前渠道中不可用:当前渠道:- https://repo.anaconda.com/pkgs/main/osx-64。它没有考虑我的本地环境。 - B.Gees
你也可以在开发模式下使用anaconda链接文件夹,命令为conda develop <directory> - https://docs.conda.io/projects/conda-build/en/latest/resources/commands/conda-develop.html - Felipe Ferrari ferrari212
显示剩余2条评论
1个回答

1

你正在使用 MacOSX,因此你首先应该使用 source activate yourenvname,然后才能使用你安装包时用的内容。欲了解更多信息,请参考 如何激活 Anaconda 环境

所以,从这里开始:conda create --name my_env python=3.5,然后再输入 source activate my_env


你尝试过在终端中导入你的包,然后运行Python并导入my_package吗?而不使用Jupyter。 - C.med
尝试使用/anaconda/envs/my_env/bin/pip install my_package仅在/anaconda/envs/中有my_env时才有效。我建议您在执行此操作之前还使用conda install pip - C.med
1
我已经尝试了这些解决方案。我意识到我的问题解释不清楚,对此我深表歉意。我正在准备一份更新,以向您解释我所测试的所有事情。 - B.Gees
1
当我重新创建一个新的环境时,我不再有问题了。我只是更新了我的pip You are using pip version 10.0.1, however version 18.1 is available,然后它就可以工作了。这很令人惊讶。我仍然可以提供给您我的更新,以查看过程是否正确? - B.Gees
1
我使用了以下命令行:conda create --name my_package python=3.5 --no-default-packagessource activate my_packageconda install jupyterconda install pippip install --upgrade pippip install .,现在我的conda环境中可以使用my_package。非常感谢C.med的关注。 - B.Gees
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接