【问题标题】:Installing module in virtualenv directory在 virtualenv 目录中安装模块
【发布时间】:2015-11-10 13:22:43
【问题描述】:

Python 和 virtualenv 的新手,所以我确定这是一个菜鸟问题,但是在将我创建的模块安装到 virtualenv 文件夹时遇到了一个奇怪的问题。

我的模块目录如下所示:

VideoUploader/
     VideoUploader/
         videouploader.py #main script
         __init__.py
     bin/
         userinfo.py #this is called by the setup.py file to get info from user via the command line during install
         __init__.py
     docs/
     setup.py
     tests/
         videouploader_tests.py
         __init__.py 

这是我的 setup.py 代码:

import json
import os
import sys
sys.path.insert(0, './bin')
import userinfo

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

config = {'description': 'VideoUploader',
    'author': '',
    'url': '',
    'download_url': '',
    'author_email': 'alegion@gmail.com',
    'version': '0.1',
    'install_requires': ['nose','feedparser','requests','peewee'],
    'packages': [],
    'scripts': ['bin/userinfo.py'],
    'name': 'VideoUploader'
}


setup(**config) 

我的 virtualenv 的目录如下所示:

NewProject/
    venv/
        bin/
        include/
        library/

我不清楚将我的模块目录放在哪里,以便我可以在这个虚拟环境中安装它。

我已尝试将其移至venv 文件夹,然后 cd 进入VideoUploader 文件夹并运行python setup.py install - 但这是放置模块文件夹的正确位置吗?

之后,在这个目录中,我打开 Python 解释器并尝试导入 VideoUploader。一切似乎都很好,但是当我尝试在模块中导入一个方法(在videouploader.py 文件中)时,就像foo = VideoUploader.assignurl() 一样,一切都按预期工作。但只能从模块文件夹VideoUploader 中,所以很明显它没有正确安装。我在这里做错了什么?

【问题讨论】:

  • 请添加 setup.py 源码
  • @svfat 添加 setup.py 代码

标签: python python-2.7 module virtualenv


【解决方案1】:

一般来说,setup.py install 可以从任意目录运行,不需要放到 venv 目录下。文件将自动复制到正确的位置。关于模块导入的错误,你确定你激活了你的virtualenv(运行source venv/bin/activate)你应该在安装之前这样做。

【讨论】:

  • 从NewProject 目录中,我运行source venv/bin/activate,一切看起来都很好。然后我 cd 进入带有 setup.py file 的 VideoUploader 目录并运行 python setup.py install ,一切看起来都很好,我的模块安装按预期执行。然后我从VideoUploder 目录中cd 回到venv 文件夹,打开Python 解释器并尝试导入VideoUploader 模块并得到一个导入错误ImportError: No module named FacebookVideoUploader — 我在这里做错了什么?
  • @SeanJarp 尝试将 'packages' 的值更改为 ['VideoUploader']
  • 好的,将packages 编辑为['VideoUploader']。现在,当我 cd 进入 venv 并启动 Python 解释器时,我可以导入 VideoUploader 但不能导入任何方法。只有当我 cd 进入VideoUploader 时,我才能访问videouploader.py 中的方法
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 2020-05-25
  • 1970-01-01
  • 2014-01-26
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
相关资源
最近更新 更多