macpro上python3的http验证

Python3 HTTP验证实践
本文详细介绍了使用Python3进行HTTP验证的过程,包括脚本编写、常见错误排查与解决方法,如本地主机配置、Web Sharing设置等。

         最近开始学习用python做web开发,参考书为python核心编程第三版,遇到了python的HTTP验证问题,发现验证出错,本人使用Mac Pro 10.12,安装python3,pycharm编程,查阅很多资料都是python2或者windows系统,解决方案比较旧,写这篇文章来纪念一下头一次解决学习问题的鸡冻心情,并以此开博,同时致敬可爱的学长,努力向他看齐微笑


 1.首先,写下python3的http验证脚本(urlopen_auth3.py),并标注出了与python2的不同,及书上代码的错误。

import urllib.request,urllib.parse,urllib.error     #python2中为urllib2,到python3中归到urllib中,并分为几个模块

LOGIN = 'wesley'
PASSWD = "you'llNeverGuess"
URL = 'http://localhost'
REALM = 'Secure Archive'

def handler_version(url):
    hdlr = urllib.request.HTTPBasicAuthHandler()       #python2中为 .. = urllib2.HTTPBas..
    hdlr.add_password(REALM,urllib.parse.urlparse(url)[1],LOGIN,PASSWD)    #python2中为 ..(REALM,urlparse(url)..
    opener = urllib.request.build_opener(hdlr)         #python2中为 .. = urllib2.build_opener..
    urllib.request.install_opener(opener)          #python2中为 urllib2.instal..
    return url

def request_version(url):
    from base64 import  b64encode    #python2中为 ..import encodestring ,此处书上错误,python3中base64没有encodestring,编码为b64encode
                                     #对应解码为b64decode
    req = urllib.request.Request(url)               #python2中为 ..= urllib2.Request..
    b64str = b64encode(bytes('%s:%s' % (LOGIN,PASSWD),'utf-8'))[:-1].    #同样,书上错误,此处应使用b64encode
    req.add_header("Authorization","Basic %s" % b64str)
    return req

for funcType in ('handler','request'):
    print('*** Using %s: ' % funcType.upper())
    url = eval('%s_version' % funcType)(URL)
    f = urllib.request.urlopen(url).           #python2中为 ..= urllib2.urlopen..
    print(str(f.readline(),'utf-8'))         #python3与python2的print语法不同,python2中为 print f.readline()
    f.close()

2.运行程序,报错,大概报错内容如下

首先要说明的是,URL已经设为http://localhost,此时需要检查localhost是否指向127.0.0.1,在终端ping一下检查。

打开终端,输入 ping localhost,运行如下,即说明指向正确


若此时出现了指向不是127.0.0.1的情况,需要重新设置,本人此处小小推荐一下

https://superuser.com/questions/541961/mac-os-x-mountain-lion-cant-ping-telnet-localhost-point-to-a-wrong-public-ip

是英文的,本人看了感觉解答不错,有需要可以看看。


3.代码和localhost的IP都没有问题,但依旧报错 connection refused 访问被拒绝,且同时,Safari无法打开http://localhost,说明网络方面依旧有问题。此时需要对Mac的web sharing设置更改。

对于Mac 10.8之前的系统,打开web sharing比较简单,只需从设置改变,方法如下:

打开System preferences -->Sharing,左侧列表中会有web sharing选项,勾选打开。

 对于Mac 10.8之后的系统,则没有此选项,需要 打开终端,输入以下代码:

$ sudo apachectl start

$ sudo apachectl stop

$ sudo apachectl restart

$ http -v

此时,用safari打开localhost测试,显示为 It works!  此时打开成功。


4.此时回到pycharm中运行urlopen_auth3.py,可以运行,无报错。


验证成功。


此处还要说明一下,本人在尝试的过程中还在终端运行了其他代码,按照参考文章的意思,应该是要设置为访问 http://localhost/~username ,但最后结果没有访问,不太清楚这段代码有没有起到作用,留做一个问题。

参考文章:http://blog.163.com/chenchen..1986/blog/static/7606314620141871119631/ 

此处就不做记录了。


<think>嗯,用户现在关注的是Mac上Python环境管理工具的选择。从对话历史看,用户之前询问过macOS下.app格式软件的安装问题,现在又转向开发环境管理,可能是位使用Mac的Python开发者。用户提供的引用内容非常全面,涵盖了主流工具的性能对比和趋势分析。我需要从中提炼出最适合Mac用户的方案。注意到引用[2]的测试数据是在M1MacBookPro上进行的,这对用户特别有参考价值。关键点有几个:首先得考虑M1芯片的兼容性,Anaconda在ARM架构上的支持可能不如原生工具;其次要区分轻量级和功能型工具,用户如果做数据科学可能偏向Anaconda,搞Web开发或许更适合PDM这类轻量工具。引用[4]提到的Rust工具趋势值得强调,uv的速度优势在M1芯片上会放大。但新工具稳定性需要提醒,像rye虽然快但还没到1.0版本。安全提示也不能少,比如conda的channel风险要特别说明。用户可能被各种工具搞晕了,我需要把推荐分层:第一梯队是经过验证的主流方案(Pipenv/PDM),第二梯队是新兴黑马(uv/rye),第三梯队是专业向方案(conda)。测试数据表格很重要,引用[2]的28秒vs2秒对比能直观说服用户。最后生成的提问要覆盖不同场景:数据科学用户会关心conda,极客用户可能想尝试uv,还应该补充团队协作场景下的工具选择问题。记得所有工具命令都要用等宽字体标注,这是程序员的基本习惯。</think> 在 macOS 上进行 Python 环境管理,以下工具根据性能、易用性和发展趋势综合推荐(基于实测数据[^2][^4]): ### 📊 主流工具对比 | **工具** | **创建环境速度** | **安装numpy速度** | **依赖解析** | **M1芯片支持** | **适用场景** | |----------------|------------------|-------------------|--------------|----------------|--------------------------| | **uv** | 0.9s ✅ | 2s ✅ | 优秀 | 原生支持 | 极速开发/大型项目 | | **PDM** | 1.8s ✅ | 12s ✅ | 优秀 | 原生支持 | PEP582标准项目[^4] | | **Pipenv** | 1.2s ⚠️ | 28s ⚠️ | 中等 | 需转译 | 简单项目/官方推荐[^1] | | **Conda** | 3.8s ⚠️ | 15s ✅ | 优秀 | ARM实验性支持 | 数据科学/跨语言依赖 | | **Poetry** | 2.1s ✅ | 18s ✅ | 优秀 | 需转译 | 包发布/复杂依赖管理 | > *注:测试环境为 M1 MacBook Pro/Python 3.10[^2]* ### 🚀 2024年推荐方案 #### 1. **极速开发选 `uv`** (由 Rust 编写) ```bash # 安装 pip install uv # 创建环境 + 安装依赖 uv venv .venv uv pip install -r requirements.txt ``` - ✅ **优势**:全球最快的依赖解析器[^4],完美兼容 `pip` 命令 - ⚠️ 注意:暂不支持 Windows #### 2. **现代项目选 `PDM`** (支持 PEP582) ```bash # 安装 pipx install pdm # 初始化项目 (自动创建.venv) pdm init pdm add numpy pandas ``` - ✅ **优势**:无需激活环境,直接运行 `pdm run python script.py` - 🌟 **特色**:依赖隔离在 `__pypackages__` 目录[^4] #### 3. **数据科学选 `Conda`** ```bash # M1芯片使用Miniforge3 brew install miniforge conda create -n ds_env python=3.10 conda install -c conda-forge numpy ``` - ✅ **优势**:跨语言依赖管理 (C/C++库) - ⚠️ 警告:避免混用 `pip` 和 `conda install`[^4] ### ⚠️ 避坑指南 1. **永远不用 `sudo pip`** → 污染系统Python环境[^4] 2. **定期清理缓存** ```bash pdm cache clear # PDM conda clean -a # Conda ``` 3. **锁定依赖版本** ```bash pdm lock # 生成pdm.lock uv pip compile # 生成requirements.txt ``` ### 🧩 版本管理建议 > 根据引用[^3],**多数用户无需 `pyenv`**: > - macOS 自带 `python3` (建议用Homebrew安装新版) > - 直接指定版本:`python3.11` 或 `python3.12` --- ### 🔍 相关问题 1. 如何在 M1 Mac 上加速 `pip install` 的编译过程? 2. `PDM` 的 PEP582 模式和传统 `venv` 有何本质区别[^4]? 3. `uv` 是否兼容 `Poetry` 的 `pyproject.toml` 文件? 4. 为什么数据科学项目更推荐 `Conda` 而非 `Pipenv`? 5. 如何安全地在团队项目中统一环境管理工具?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值