我找到的每个Python发行版都包含很多我不需要的库(numpy,scipy,PyQt等)我正在寻找不需要安装的便携式CPython模拟,除了它的目录之外什么都不接触,而且很小通过慢速或计量的Internet连接下载.
为什么我需要那个.需要在没有先决条件的Windows计算机上复制部署项目.其次,使用Python解释器和包(包括我的)构建项目目录必须完全自动化,并且应该使用项目的存储库和可以从Internet轻松下载的文件.
我已经安装了Python 3.4.0并创建了虚拟环境python -m venv myenv.如何在虚拟环境中更改Python版本?文件说:
每个虚拟环境都有自己的Python二进制文件(允许创建具有各种Python版本的环境),并且可以在其站点目录中拥有自己独立的已安装Python包集.
UPDATE
请注意,我从标准库询问venv,而不是virtualenv.让我提供一些链接.
我没有--python在venv中看到类似旗帜的东西.
venv和virtualenv绝对相似吗?venv是如此不受欢迎,没有人使用它,以便virtualenv仍然是标准?
我正在尝试正确解决禁用下载管理器.我能找到的最佳信息是如何启用Android下载管理器.
PackageManager.COMPONENT_ENABLED_STATE_DISABLEDPackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER对我来说,状态是可以理解的.
但经过一小时的谷歌搜索,我仍然感到困惑PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED.
文件如下:
仅适用于setApplicationEnabledSetting(String,int,int)的标志:应考虑此应用程序,直到用户实际想要使用它为止.这意味着它通常不会显示给用户(例如在启动器中),但是用户界面的各个部分可以使用GET_DISABLED_UNTIL_USED_COMPONENTS仍然可以看到它并允许用户选择它(例如IME,设备管理员)等).一旦用户选择了应用程序,此类代码也应在此时启用.此选项当前不能与setComponentEnabledSetting(ComponentName,int,int)一起使用.
这是否意味着我应该将此状态视为已启用?
用户如何选择 DownloadManager?它怎么能出现?
我想使用如下所示的自定义模板hg log:
hg log --template '{node|short} {desc} [{date|age} by {author}]\'n --color=always
Run Code Online (Sandbox Code Playgroud)
这在默认的终端颜色不是很可读,所以例如我想使节点红色和desc绿色.我怎样才能做到这一点?在git中我可以像这样定义这种格式:
git log --pretty=format:'%Cred%h%Creset %Cgreen%s%Creset [%ar by %an]'
Run Code Online (Sandbox Code Playgroud)
在mercurial中类似的事情是否可能?
我现在正在使用Python 3.5解释器,发现了非常有趣的行为:
>>> (1,2,3,"a",*("oi", "oi")*3)
(1, 2, 3, 'a', 'oi', 'oi', 'oi', 'oi', 'oi', 'oi')
>>> [1,2,3,"a",*range(10)]
[1, 2, 3, 'a', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ('aw','aw',*range(10),*(x**2 for x in range(10)))
('aw', 'aw', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
>>> {"trali":"vali", **dict(q=1,p=2)}
{'q': 1, 'p': 2, 'trali': 'vali'}
>>> {"a",1,11,*range(5)}
{0, 1, 2, 3, 4, 11, 'a'}
Run Code Online (Sandbox Code Playgroud)
尽管我有多年的Python经验,但我从未在文档和示例中以及任何源代码中看到过这种情况.我发现它非常有用. …
简单示例:我需要并行创建两个不相关的HTTP请求.最简单的方法是什么?我希望它是这样的:
async def do_the_job():
with aiohttp.ClientSession() as session:
coro_1 = session.get('http://httpbin.org/get')
coro_2 = session.get('http://httpbin.org/ip')
return combine_responses(await coro_1, await coro_2)
Run Code Online (Sandbox Code Playgroud)
换句话说,我想启动IO操作并等待其结果,以便它们有效地并行运行.这可以通过以下方式实现asyncio.gather:
async def do_the_job():
with aiohttp.ClientSession() as session:
coro_1 = session.get('http://example.com/get')
coro_2 = session.get('http://example.org/tp')
return combine_responses(*(await asyncio.gather(coro_1, coro_2)))
Run Code Online (Sandbox Code Playgroud)
接下来,我想要一些复杂的依赖结构.我希望在我拥有所有先决条件时开始操作,并在需要结果时获得结果.这里有助于asyncio.ensure_future分别从事件循环管理的协程中执行单独的任务:
async def do_the_job():
with aiohttp.ClientSession() as session:
fut_1 = asyncio.ensure_future(session.get('http://httpbin.org/ip'))
coro_2 = session.get('http://httpbin.org/get')
coro_3 = session.post('http://httpbin.org/post', data=(await coro_2)
coro_3_result = await coro_3
return combine_responses(await fut_1, coro_3_result)
Run Code Online (Sandbox Code Playgroud)
是不是在我的逻辑流程中使用协同程序实现并行非阻塞IO,我必须使用asyncio.ensure_future或者asyncio.gather(实际使用asyncio.ensure_future)?是否有一种不那么"冗长"的方式?
通常开发人员必须考虑协同应该成为单独的任务并使用上述功能来获得最佳性能,这是真的吗?
在事件循环中使用没有多个任务的协同程序是否有意义?
现实生活中的事件循环任务有多"重"?当然,它们比OS线程或进程"更轻".我应该在多大程度上争取尽可能少的此类任务?
考虑简单的代码:
#include "stdio.h"
#define N 10U
int main() {
int a[N] = {0};
unsigned int i = N;
int s = 0;
// Fill a
while(i--)
s += a[i];
printf("Sum is %d\n", s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
while由于整数下溢,循环是否包含未定义的行为?编译器是否有权假设while循环条件始终为真,因此最终会出现无限循环?
如果i是的话signed int?它不包含与阵列访问相关的陷阱吗?
更新
我运行这个和类似的代码很多次,它工作正常.此外,它是向后迭代数组和向量的流行方式.我问这个问题,以确保从标准的角度来看这种方式是可行的.
乍一看,它显然不是无限的.另一方面,有时编译器可以"优化"某些条件和代码,假设代码不包含未定义的行为.它可能导致无限循环和其他不必要的后果.看到这个.
我想int64在一些int32不受限制的范围内制作均匀分布的随机数组.
有randint,random_integers但他们合作int32; 提供大上限产生high is out of bounds for int32.
如何生成int64指定范围的随机数组?
可能的解决方案:
int64数组,然后通过规范化lower + x % (upper - lower).但是int32世代是否有相同的规范化?它不会影响均匀性吗?我不想错过一些简洁方便的方法吗?
为什么随机方法只产生floats和int32?
考虑以下代码:
// durations are from std::chrono
auto a = get_duration_1(); // milliseconds, will vary in future versions
auto b = get_duration_2(); // seconds, will vary in future versions
auto c = std::min(a, b);
Run Code Online (Sandbox Code Playgroud)
它不会编译,因为编译器std::min因为不同的参数类型而无法实例化正确的版本.
当然,现在可以明确指定类型std::min<milliseconds>.在此代码的未来版本中,类型会有所不同.在不知道确切持续时间类型的情况下,这样做的通用方法是什么
在C++ 11和boost中,智能指针可以是nullptr.我想知道为什么.这意味着每次从不受控制的客户端代码传递给接口方法时,必须检查智能指针是否为nullptr.显然,这种检查是在运行时执行的.
如果有智能指针只能通过make_shared或make_unique创建并且无法重置或重新分配给nullptr或原始指针怎么办?此方法允许确保指针在编译时不是nullptr .
例如,在Java中,我们总是必须检查对象是否为空(坏).但是在Swift中,我们可以明确地确保参数(或变量)在编译时不是空的(好的).
UPD:嗯,非常感谢您的回答和评论.我明白了.但是有没有任何流行的库支持非归零编译时保证以及所有权,也许是智能指针包装器?
python ×5
c++ ×2
c++11 ×2
aiohttp ×1
android ×1
boost ×1
c ×1
c++-chrono ×1
formatting ×1
mercurial ×1
numpy ×1
pep448 ×1
portability ×1
python-2.7 ×1
python-3.x ×1
python-venv ×1
random ×1