Вернитесь '-опция no-site-package с virtualenv

Я сделал небольшую вспомогательную функцию:

Func<Type, string, Type[], Type[], MethodInfo> getMethod = (t, n, genargs, args) =>
    {
        var methods =
            from m in t.GetMethods()
            where m.Name == n && m.GetGenericArguments().Length == genargs.Length
            let mg = m.IsGenericMethodDefinition ? m.MakeGenericMethod(genargs) : m
            where mg.GetParameters().Select(p => p.ParameterType).SequenceEqual(args)
            select mg
            ;

        return methods.Single();
    };

Работает для простых не-генериков:

var m_movenext = getMethod(typeof(IEnumerator), nameof(IEnumerator.MoveNext), Type.EmptyTypes, Type.EmptyTypes);

Как и для сложных дженериков:

var t_source = typeof(fillin1);
var t_target = typeof(fillin2);
var m_SelectMany = getMethod(
           typeof(Enumerable), 
           nameof(Enumerable.SelectMany), 
           new[] { 
               t_source, 
               t_target 
           }, 
           new[] {
               typeof(IEnumerable<>).MakeGenericType(t_source),
               typeof(Func<,>).MakeGenericType(t_source, typeof(IEnumerable<>).MakeGenericType(t_target)) 
           });
122
задан Olivier Verdier 30 July 2010 в 14:21
поделиться

3 ответа

Попробуйте удалить (или переименовать) файл no-global-site-packages.txt в папке Lib в виртуальной среде.

Где venv - это имя вашей виртуальной среды, а python3.4 соответствует какой бы то ни было версии python, например:

$ rm venv/lib/python3.4/no-global-site-packages.txt

И если вы передумаете и хотите вернуть его:

$ touch venv/lib/python3.4/no-global-site-packages.txt

Примечание: Если вы не видите указанный выше файл, значит, у вас более новая версия virtualenv. Вы захотите подписаться на этот ответ вместо

157
ответ дан 24 November 2019 в 01:25
поделиться

Перейдите к своей venv папке и откройте pyvenv.cfg. (Например, если Вашу виртуальную среду назовут myenv тогда, то файл будет расположен в myenv\pyvenv.cfg)

, Вы будете видеть, что булевская переменная устанавливает названный include-system-site-packages

Набор, что, устанавливая на true для использования глобальных пакетов

, Если Вы хотите отключить использующие глобальные пакеты, просто установите ту установку на false вместо этого.

0
ответ дан 24 November 2019 в 01:25
поделиться

Попробуйте добавить символическую ссылку между / virtualenv_root / lib / и / путь / к / желаемый / сайт-пакеты /

2
ответ дан 24 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: