问题:
在使用pip安装torch时

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126

出现

Fatal error in launcher: Unable to create process using '"D:\?????\.venv\Scripts\python.exe"  "D:\keyan\.venv\Scripts\pip3.exe" install torch torchvision --index-url https://download.pytorch.org/whl/cu126': ???????????

原因:
创建虚拟环境之后,如果给文件夹重命名再使用pip

给文件夹重命名的原因的本来用的中文路径,xarray读取nc文件的时候读取不到

问大肥鱼:
虚拟环境被移动或重命名过:Windows 上的 venv 虚拟环境不是“便携”的。创建时,pip.exe 里就写死了当时 python.exe 的绝对路径。一旦移动或重命名了虚拟环境所在的文件夹,这个路径就会失效。

路径中包含中文或空格:Windows 的启动器在处理包含中文字符或空格的路径时,可能会因为编码问题导致解析失败,出现 ????? 这样的乱码。

方法一:使用 python -m pip 临时绕过

通过 Python 解释器来调用 pip 模块,绕过损坏的 pip.exe 启动器

在当前的虚拟环境 (.venv) 下,直接运行以下命令安装 PyTorch:

python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126

方法二:强制重装 pip 以修复启动器

执行以下命令,让 pip 根据当前正确的路径重新生成启动器文件

python -m pip install --upgrade --force-reinstall pip

方法三:重建虚拟环境

使用如下脚本下载数据

import cdsapi
c = cdsapi.Client()

c.retrieve(
    'reanalysis-era5-pressure-levels',
    {
        'product_type': 'reanalysis',
        'variable': 'temperature',
        'pressure_level': '1000',
        'year': '2024',
        'month': '01',
        'day': ['01','02'],
        'time': ['00:00','06:00','12:00','18:00'],
        'format': 'netcdf',
        'area': [40,100,30,110],  # N,W,S,E 经纬度裁剪【重点,减少文件体积】
    },
    'era5_t2m_202401.nc')

运行时出现

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://cds.climate.copernicus.eu/api/retrieve/v1/processes/reanalysis-era5-pressure-levels/execution
required licences not accepted
Not all the required licences have been accepted; please visit https://cds.climate.copernicus.eu/datasets/reanalysis-era5-pressure-levels?tab=download#manage-licences to accept the required licence(s).

需要手动点击,相关数据的链接接受license

然后重新运行脚本就可以获取到数据了。

最近在看马原,看到哲学的部分,就想起了高中的一个朋友。现在也不联系了。这里管他叫做阿达。很高很壮。但是实际上心思细腻,这点存疑,不过确实应该是对哲学研究比较深刻,这点也存疑。具体是一个怎么样的人,我无法下定论,但是应该是一个好人。在我的记忆里,我们大部分的交谈都是从他的“锐评一下”开始的。这究竟是不是他的口头禅呢,我不清楚。其实大多数时候我是没有见解的,高中的时候。其实就算是现在也说不出什么所以然来,对于一些事情。

我虽然不是很羡慕那些在高中的时候就有着很清晰的价值观的人,但是依旧很佩服。至少在高中的时候那个妄自菲薄的年纪,他们是我某种程度上想要成为的人。不过我内核上其实依旧是一个得过且过的人,并不具备所谓的叛逆想法,对很多事情都是没有看法的。简单来说就是没有思想。还是高一的时候在一个班级关系比较密切。其实可能也仅仅是普通朋友,在现在的角度看来。不过我觉得加上时间以及当时的状态因素,至少在我心里,应该是好朋友。印象比较深刻的就是在运动会的时候,我们去了学校的初中部,那边没有人,至少在运动会的时候。然后在一个建筑物的最高层,用他的手机排了张合照。这张照片现在是否还在我的相册里面,我不是很清楚,换过了两次手机,应该是没有备份的。

后面高二分班,他选了文科班,我选了理科班。高一时候的班主任还是他的班主任。后续再见面只有在上自选的体育混班上的时候打羽球看到过他,一起打过一次球。他现在在上海,在一个假期很多的大学。和我其他的朋友联系紧密,我猜测可能是同样在上海,也有可能是因为高中时同样在文学社或是辩论社之类的社团。如果前面的猜测还有依据,那么后面的猜测就纯属猜测而已,我忘记了他高中时候的社团。也可能是动漫社?虽然我觉得他的日语水平让他对于日本文化会有所涉猎,但是也不能等同于对动漫也涉猎或者存有兴趣。我一直对他有印象,每次要去上海都会想到他,不过两次想去都因为各种原因没有见成。

我想,我会对哲学产生一点兴趣大概就是受他的影响。不过就算是在兴趣最浓厚的时候,也仅仅是翻过几页图书馆的书,没有接受过体系化的教育。至于基于哲学对生活,社会,个人的反思更是无从谈起。

我向往这样的人,但是我没有信仰。

到底是先有了生活,用生活去适配哲学的形状,还是用哲学的框架来捏出生活的样子,我可能更像是前者。高中的时候生活不复杂,简单的几句话就能大概的约束好生活,指导生活。但是现在我也不懂到底什么样的哲学是对的,我可能也着相了。信仰或许可以后天形成吧,但是我不懂有没有这种条件,也可能是还没有到该有信仰的年龄。我能做的仅仅是观察自己的生活,然后有个模糊的分类,在下次谈到某种深层次话题的时候可以用来自嘲。但是现在并没有会聊这种话题的人,在我周围。

很奇怪,在最不需要思考的时候,让我遇到了阿达,开始反思自己的信仰,有了模糊的意动,想来思考生活,却在最需要思考生活的时候失去了信仰。

现在偶尔发空间的时候阿达会在评论区留言复读。下次见不知道是什么时候了,再见面的时候大概也不会再聊这些了。

很久之前就想给 typecho开发主题,但是一直没有闲下来。
最近得闲就打算开这个坑。

要搭建一个typecho的开发环境。
其实就是下载typecho,然后解压,php启动就行。把要开发的主题放到user的theme文件夹里面,然后就可以开发了。
本地php启动一个服务器

php -S 127.0.0.1:8080 -t typecho

先是看default主题里面的文件
404.php 就是404页面
comments.php 就是评论页面
footer.php 就是页脚
functions.php 类似于 utils 有自己实现的函数,typecho的逻辑是启动主题,访问任意一个页面会自动加载这个文件,所以其他文件不用引用就可以使用里面定义的函数
header.php 是页头
page.php 是独立页面
post.php 是文章页面
sidebar.php 是侧边栏
index.php 就是首页,从分类,标签,作者点进去也是这个文件

三个css
grid.css 提供了grid布局
normalize.css 覆写了一些 html标签 的样式,让所有浏览器表现一致
style.css 就是一些样式css

先是看index.php,里面有一些typecho实现的函数
need()
示例:
$this->need('header.php');
作用是引入php文件。typecho封装了这个方法,就不用手动引入,然后可以自己判断路径,防止重复引入。

is()
示例:
$this->is('index')
用来判断是什么页面

_t()
里面的内容会自动翻译然后有返回值给到一个变量

_e()
里面的内容会自动翻译然后直接输出

<h3 class="archive-title"><?php $this->archiveTitle([
    'category' => _t('分类 %s 下的文章'),
    'search'   => _t('包含关键字 %s 的文章'),
    'tag'      => _t('标签 %s 下的文章'),
    'author'   => _t('%s 发布的文章')
], '', ''); ?></h3>

这个主要是archiveTitle函数,会根据不同的页面显示不同的内容。也就是说在没有定义category等对应的页面时,访问index页面会判断具体是什么页面然后输出对应的内容。

typecho的路由规则

页面类型优先其次兜底
首页index.php--
文章详情post.phpindex.php-
独立页面page.phpindex.php-
分类归档category.phparchive.phpindex.php
标签归档tag.phparchive.phpindex.php
日期归档archive.phpindex.php-
搜索页search.phpindex.php-
404 页404.phpindex.php-

如果要自定义页面,官方给的做法是使用自定义模板。
先是创建一个 新的php文件,随便叫什么名字
然后文件开头加上

<?php
/**
 * test
 *
 * @package custom
 */
?>

那个 test 是模板名称,随便改,@package custom 是为了告诉typecho这是个模板
之后可以后台新加一个独立页面,然后自定义模板处选择 这个 模板

想起之前卓越班讲课。是讲分支和循环。准备的ppt其实是去年的改了改。教室在c205. 我想到我自己在参加卓越培训的时候。当时还是一个很上进的人,好像我周围的人也是。我没有孤独的感受,内心被这种机会诱惑住了,我一定要抓住他,并且一定要做的比所有人都好。还是军训,劣质的衣物不合身的套在身上,为了不错过讲课时间,一回宿舍就带着电脑过去了。我和舍友不是在一个地方军训,自然回去的时候也不是一起。回头看,现在做任何事都想要找个“搭子”,下雨一个人走到地铁站会叹气然后折返的人,当时会一个人前往,并且坐在最前面,怕看不到屏幕。我对其他人学长学姐的讲课好像没有印象了。只记得一个坐的规规矩矩的学姐,对着话筒,在讲课。讲的什么呢?会不会也是分支与循环?我觉得不会是那么的巧合。我一边依旧是跟不上节奏,一边也会羡慕她,不知道当时的我会不会有一个念头,就是想着自己也坐在那个位置上。不过我现在如果回到那个时候应该是不会想了。我不知道会不会去,就算是去也一定不会坐在那么前面了,周围是热闹的互动显得我格格不入。当时坐在我隔了一个走廊的对面就是周某人。再往后是我的舍友,现在正在为了考研奔波,显然没有想过算法的事情。坐在台上的学姐去年保研上了电子科技大学,在我刚刚是社长的时候还有联系,偶尔见到会打招呼。

青春和关于青春的认知 你无法同时拥有。

我安静的看着屏幕,笨拙地使用可以随意弯折的台式话筒,姑且这么叫,等待着讲课时间。已经投屏了,腾讯会议也开好了,电脑是用的放在io实验室的旧电脑,系统刚刚装完,把需要用到的文件拷贝到桌面上。讲了下简单的开场白,后面就是准备的例子教一些for循环,while循环,if语句,switch语句之类。还有做题环节,周某人找的助教就在下面巡视,有问题就帮忙。我努力地讲,但是有让我印象深刻的人没有几个。大多数只有过一面之缘。讲课的地点是学着以前我们参加讲课时候的教室,在c205,时间也是。我记得好像是讲了快2h,实际上应该是1h多,还有一半的时间是刷题。还是很紧张,但是其实现场的氛围还算是热烈,中场休息之后,后面就更加地投入了。中场休息时也有下去游走,帮忙解决问题。感觉依旧是和以前一样,只是我现在在讲。我回到了那个场域,使用的不同的身份。明明已经知道卓越班大概是个坑,但是看着他们认真努力的样子,总有点不忍。不管是什么立场我都说不出让他们就呆在普通班这种话。上一次,我听到这种观点是第一次开班会,比我大两届的学长,是我们班导师,和我们说的。但是我依旧像是飞蛾扑火想要抓住这看不到未来的机会,尽管我当时也不知道这到底意味着什么。我可能是后悔了。于是我看着他们说,加入卓越班可以有更多的资源,但是也意味着会很卷,不管是卓越班还是普通班,大家都有很好的未来,加油吧。后面结束了,在把剩下听课的人赶回宿舍之后,和相识的助教道别,c205只有我一个了。太晚了,后面我是怎么回去的呢,有点忘记了。月亮好圆,不管何时看都是那样子安静的挂在天上。秋天,气温维持在不冷不热恰到好处的地方。当时我在想什么呢?可能那已经算是我为数不多悠闲的日子,后面就忙起来了。