люди - эта проблема мучает меня некоторое время и только в конкретной системе, которую я использую. Мой обходной путь состоял в том, чтобы установить пакеты python вне моей виртуальной среды python, но я хотел бы просто исправить проблему. Я неделями искал решение, и мне не повезло. Я использую код Visual Studio на Windows 10.
Требуется помощь
Я хотел бы исправить описанную ниже проблему и избежать описанного обходного пути, но не смог ее исправить. Любая помощь в решении этой проблемы будет принята с благодарностью.
Проблема
Когда я выполняю настройку виртуальной среды и устанавливаю pip:
PS D:\Code\my-pkg> python -m venv venv
PS D:\Code\my-pkg> .\venv\Scripts\activate
(venv) PS D:\Code\my-pkg>pip install -e ".[test]" --force
Я должен иметь возможность запустить "publish.py" из моей командной строки:
(venv) PS D:\Code\my-pkg> publish
Однако, когда я пытаюсь запустить его, я получаю следующее:
Traceback (most recent call last):
File "D:\Code\my-pkg\venv\Scripts\publish.py", line 4, in <module>
__import__('pkg_resources').require('my-pkg==0.2.0.0')
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 3088, in <module>
@_call_aside
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 3072, in _call_aside
f(*args, **kwargs)
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 3101, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 574, in _build_master
ws.require(__requires__)
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 892, in require
needed = self.resolve(parse_requirements(requirements))
File "C:\Python37\lib\site-packages\pkg_resources\__init__.py", line 778, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'my-pkg==0.2.0.0' distribution was not found and is required by the application
Обходной путь
Чтобы обойти это, я должен вызвать скрипт напрямую:
(venv) PS D:\Code\my-pkg> .\src\Scripts\publish.py
Что приводит к
Traceback (most recent call last):
File "D:\Code\my-pkg\src\Scripts\publish.py", line 5, in <module>
import click
ModuleNotFoundError: No module named 'click'
Что я могу обойти, установив click на мою систему, вне виртуальной среды. Однако мне нужно сделать это для любых других зависимостей пакетов, которые у меня могут быть, что противоречит цели использования virtualenv.
setup.py
from setuptools import setup, find_packages
import os
build_num = os.environ.get('BUILD_NUMBER', '0')
version = "0.2.0.{}".format(build_num)
test_requirements = ['pytest', 'pylint', 'coverage', 'pytest-cov']
setup(
name="my-pkg",
version=version,
packages=find_packages(),
scripts=[
'src/Scripts/publish.py'
],
tests_require=test_requirements,
install_requires=[
'requests',
'requests_negotiate_sspi',
'wincertstore',
'click'
],
extras_require={
'test':test_requirements
}
)
publish.py
import logging
import click
@click.group()
def tests():
return 0
@tests.command()
@click.argument("endpoint")
@click.argument("results_path")
@click.option("--format", "-i", type=click.Choice("nunit", "junit"), required=True)
@click.option("--logging_level", "-l", type=click.Choice(logging.INFO, logging.DEBUG), default=logging.INFO, show_default=True)
def find(endpoint, results_path, format, logging_level):
logging.basicConfig(level=logging_level)
logging.info("Hello, friend")