<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>包管理 on 老张开工了</title>
    <link>/%E5%8C%85%E7%AE%A1%E7%90%86/</link>
    <description>Recent content in 包管理 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 28 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E5%8C%85%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>虚拟环境与依赖管理</title>
      <link>/posts/2026/05/virtualenv-dependencies/</link>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/virtualenv-dependencies/</guid>
      <description>想象一下：你在项目 A 里用 Django 4.2，项目 B 因为遗留代码只能用 Django 3.2。如果全局只装一个版本的 Django，你只能在两个项目之间反复卸载重装——这简直是噩梦。&#xA;虚拟环境（Virtual Environment）就是来解决这个问题的：它为每个项目创建独立的 Python 环境，每个环境有自己的一套包，互不干扰。&#xA;为什么需要虚拟环境？ 依赖冲突问题 没有虚拟环境时，你的全局 Python 环境是这样的：&#xA;# 全局安装的包（所有项目共享） pip list # Django 4.2 # requests 2.31 # numpy 1.26 这对不同项目的需求造成了冲突：&#xA;项目 需要的版本 问题 项目 A Django 4.2 ✅ 项目 B Django 3.2 ❌ 全局装了 4.2 项目 C requests 2.20 ❌ 全局装了 2.31 虚拟环境的解决方案 系统 Python ├── 虚拟环境 A → Django 4.2, requests 2.31 ├── 虚拟环境 B → Django 3.</description>
    </item>
    <item>
      <title>模块与包管理</title>
      <link>/posts/2026/05/modules-packages/</link>
      <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/modules-packages/</guid>
      <description>到目前为止，我们所有的代码都写在了一个文件中。当程序变得庞大时，把所有代码塞在一个文件里会让维护变得痛苦不堪。&#xA;Python 通过**模块（Module）和包（Package）**来解决这个问题。模块就是 .py 文件，包就是包含模块的目录。借助这套机制，你可以把代码拆分成逻辑单元，复用第三方库，并组织自己的项目结构。&#xA;模块的概念 一个 .py 文件就是一个模块。模块名就是文件名（去掉 .py）。&#xA;# 文件：greeting.py &amp;#34;&amp;#34;&amp;#34;问候模块&amp;#34;&amp;#34;&amp;#34; def say_hello(name): return f&amp;#34;Hello, {name}!&amp;#34; def say_goodbye(name): return f&amp;#34;Goodbye, {name}!&amp;#34; PI = 3.14159 # 模块中也可以定义变量 print(f&amp;#34;模块 {__name__} 已加载&amp;#34;) # 每个模块都有 __name__ 在其他文件中导入它：&#xA;# 文件：main.py import greeting # 导入 greeting 模块 print(greeting.say_hello(&amp;#34;Alice&amp;#34;)) # Hello, Alice! print(greeting.PI) # 3.14159 import 的各种方式 基本导入 # 方式 1：导入整个模块 import math print(math.sqrt(16)) # 4.0 # 方式 2：导入特定对象 from math import sqrt, pi print(sqrt(25)) # 5.</description>
    </item>
  </channel>
</rss>
