【发布时间】:2019-01-13 19:48:13
【问题描述】:
我想做一个可重定位的环境。所以我需要在包安装中使用相对路径。为此,我只需创建一个这样的 Conda 环境:
conda create --prefix env python=3.6.5
activate .\env
然后我像往常一样安装了所需的软件包
pip install package_name
当我想安装自己的包时,问题就来了。我已经创建了一个这样的结构,并且我关注了this tutorial:
some_root_dir/
|-- setup.py
|-- python_files
|-- |-- runall.py
|-- |-- test0.py
而setup.py的内容是这样的:
from setuptools import setup
setup(
name='my_app',
version='0.1',
description='My app',
keywords="app csv some other word",
url='https://www.my_domain.com/',
author='My name',
author_email='email@email_domain.com',
license='MIT',
packages=['my_package'],
zip_safe=False,
)
但安装后:
cd some_root_dir
pip install .
并将其移动到另一个位置,应用程序中出现的路径是我执行pip install .的路径
我一直在寻找信息here,但没有找到任何有用的信息。
我想做的主要步骤
- 创建一个conda环境,用pip或conda安装一些包,包括我自己的python包
- 将环境文件夹复制到另一台计算机
- 在这台未安装 conda 和 python 的计算机上运行应用程序。如果我使用文件夹中包含的
python.exe,python 应该知道包的安装位置以及如何导入它们。
问题
- 如何在环境包中使用相对路径?
- 这可行吗?还是我做错了什么?
- 实现我想要的最佳实践是什么?
- 可重定位环境是否可行?
注意:我使用的是 Windows 10 和 Miniconda 3。
虚拟环境
virtualenv 上的等价物是 this:
virtualenv --relocatable env_folder
但这是一个实验性功能
更新(2018 年 8 月 7 日)
实际上我想要的是@interfect 在他的评论中所说的,问题是here。所以 conda 上的可重定位环境还不可能
【问题讨论】:
-
1) 为什么要安装两次? 2)“并将其移动到另一个位置,出现在应用程序中的路径是” - 请为这两个语句提供示例输出,不清楚您将什么移动到哪里以及哪些路径“出现”以及在哪里。
-
所以您想要一个可以在一个地方设置的 Conda 环境,然后当您将整个环境移动到另一个地方时仍然可以工作?看起来您可能想要这个未实现的 conda 功能:github.com/conda/conda/issues/3097
-
@ivan_pozdeev @interfect 不完全是。我想要的是在我的计算机中创建一个环境,假设路径
C:\path\to\my\environment,将文件夹复制到另一台装有 Windows 的计算机,并使其在其他 Windows 中以不同的路径C:\Users\MyUser\AppData\Roaming\MyApp运行。这个其他窗口不应该安装 python 或 conda。所以环境本身应该是可运行的 -
其实一个独立的安装程序是完美的解决方案,但我不知道是否可能,因为完整的应用程序是用Nodejs、JavaScript和python创建的。有没有办法创建一个
exe文件来安装所有这些内容? -
你试过没有
-e的pip install吗?
标签: python pip virtualenv setuptools conda