calibre - en to zh_CN translation catalogue (104 entries)

en: Setting up a calibre development environment
zh_CN: 设置Calibre开发环境

en: calibre is completely open source, licensed under the `GNU GPL v3 <https://www.gnu.org/licenses/gpl.html>`_. This means that you are free to download and modify the program to your heart's content. In this section, you will learn how to get a calibre development environment set up on the operating system of your choice. calibre is written primarily in `Python <https://www.python.org>`_ with some C/C++ code for speed and system interfacing. Note that calibre requires at least Python 3.8.
zh_CN: calibre是一个完全意义上的开源程序，它采用`GNU GPL v3<https://www.gnu.org/licenses/gpl.html>_`许可证。这意味着你可以按照自己的想法下载并修改该程序。在本节，你将学会如何在你选择的操作系统下建立calibre开发环境。calibre主要使用`Python <https://www.python.org>`_ 编程，为了兼顾系统接口与速度使用了一些C/C+代码。注意，calibre要求Python 3.8及以上版本。

en: Contents
zh_CN: 目录

en: Design philosophy
zh_CN: 设计理念

en: calibre has its roots in the Unix world, which means that its design is highly modular. The modules interact with each other via well defined interfaces. This makes adding new features and fixing bugs in calibre very easy, resulting in a frenetic pace of development. Because of its roots, calibre has a comprehensive command line interface for all its functions, documented in :doc:`generated/en/cli-index`.
zh_CN: calibre源自Unix，它的设计是高度模块化的。模块间相互作用通过定义良好的接口实现。这使在calibre中添加新功能或者修改bug十分方便，这种便利性使calibre的开发很迅速。正因这种模块化设计思想，calibre对所有功能，都有一个完整的命令行接口，可以参考 `generated/zh_CN/cli-index`进行了解。

en: The modular design of calibre is expressed via ``Plugins``. There is a :ref:`tutorial <customize>` on writing calibre plugins. For example, adding support for a new device to calibre typically involves writing less than a 100 lines of code in the form of a device driver plugin. You can browse the `built-in drivers <https://github.com/kovidgoyal/calibre/tree/master/src/calibre/devices>`_. Similarly, adding support for new conversion formats involves writing input/output format plugins. Another example of the modular design is the :ref:`recipe system <news>` for fetching news. For more examples of plugins designed to add features to calibre, see the `Index of plugins <https://www.mobileread.com/forums/showthread.php?p=1362767#post1362767>`_.
zh_CN: 模块化设计的思想通过“插件”体现出来。关于“插件”的编写，这里有一份教程 :ref:`tutorial <customize>`。举个例子，如果要给calibre添加一个新的设备支持，一般只需要利用设备驱动插件范式写不到100行代码即可。你能从获取`built-in drivers <https://github.com/kovidgoyal/calibre/tree/master/src/calibre/devices>`_。类似地，为新的转换格式添加支持，也只需要改写输入/输出格式插件。模块化设计的另一个例子是抓取新闻，`recipe system <news>`。对于更多可加入calibre的插件，可以参考 `Index of plugins <https://www.mobileread.com/forums/showthread.php?p=1362767#post1362767>`_。

en: Code layout
zh_CN: 代码布局

en: All the calibre Python code is in the ``calibre`` package. This package contains the following main sub-packages
zh_CN: 所有calibre的Python代码都在``calibre``包中。它包含了以下的主要子包。

en: devices - All the device drivers. Just look through some of the built-in drivers to get an idea for how they work.
zh_CN: 设备 -- 所有的设备驱动器。通过浏览部分内置驱动器来获取他们的运作方式。

en: For details, see: ``devices.interface`` which defines the interface supported by device drivers and ``devices.usbms`` which defines a generic driver that connects to a USBMS device. All USBMS based drivers in calibre inherit from it.
zh_CN: 更多细节可以参考，:``devices.interface``。这其中定义了被驱动器支持的接口,。另外``devices.usbms``也值得关注，它定义了一个连接了usbms设备的通用驱动器。 在calibre中，所有的基于usbms的驱动器都继承自它.。

en: e-books  - All the e-book conversion/metadata code. A good starting point is ``calibre.ebooks.conversion.cli`` which is the module powering the :command:`ebook-convert` command. The conversion process is controlled via ``conversion.plumber``. The format independent code is all in ``ebooks.oeb`` and the format dependent code is in ``ebooks.format_name``.
zh_CN: 电子书 - 所有电子书转换/元数据代码。 一个好的起点是“calibre.ebooks.conversion.cli”，它是为 ebook-convert 命令提供动力的模块。 转换过程是通过“conversion.plumber”控制的。 与格式无关的代码全部在“ebooks.oeb”中，与格式相关的代码在“ebooks.format_name”中。

en: Metadata reading, writing, and downloading is all in ``ebooks.metadata``
zh_CN: 元数据的读取、写入和下载都在``ebooks.metadata``中

en: Conversion happens in a pipeline, for the structure of the pipeline, see :ref:`conversion-introduction`. The pipeline consists of an input plugin, various transforms and an output plugin. The code that constructs and drives the pipeline is in :file:`plumber.py`. The pipeline works on a representation of an e-book that is like an unzipped epub, with manifest, spine, toc, guide, html content, etc. The class that manages this representation is OEBBook in ``ebooks.oeb.base``. The various transformations that are applied to the book during conversions live in :file:`oeb/transforms/*.py`. And the input and output plugins live in :file:`conversion/plugins/*.py`.
zh_CN: 转换发生在传输途径中，传输途径的结构请参见“转换简介”。 该传输途径由输入插件、各种转换和输出插件组成。 构建和驱动传输途径的代码位于“plumber.py”中。 该传输途径适用于电子书的表示，就像解压的 epub，具有清单、书脊、目录、指南、html 内容等。管理此表示的类是“ebooks.oeb.base”中的 OEBBook 。 在转换过程中应用于本书的各种转换位于“oeb/transforms/*.py”中。 输入和输出插件位于“conversion/plugins/*.py”中。

en: E-book editing happens using a different container object. It is documented in :ref:`polish_api`.
zh_CN: 电子书编辑使用不同的容器对象。详见 `polish_api`。

en: db - The database back-end. See :ref:`db_api` for the interface to the calibre library.
zh_CN: db -- 数据库后端。参考`db_api`了解calibre的接口。

en: Content server: ``srv`` is the calibre Content server.
zh_CN: 内容服务器: "srv"是calibre的内容服务器。

en: gui2 - The Graphical User Interface. GUI initialization happens in ``gui2.main`` and ``gui2.ui``. The e-book-viewer is in ``gui2.viewer``. The e-book editor is in ``gui2.tweak_book``.
zh_CN: gui2 -- 图形用户接口。GUI初始化位于``gui2.main``与``gui2.ui``。电子书浏览器位于``gui2.viewer``。电子书编辑器位于``gui2.tweak_book``。

en: If you want to locate the entry points for all the various calibre executables, look at the ``entry_points`` structure in `linux.py <https://github.com/kovidgoyal/calibre/blob/master/src/calibre/linux.py>`_.
zh_CN: 如果要定位所有各种Calibre可执行文件的入口点，请在“linux.py <https://github.com/kovidgoyal/calibre/blob/master/src/calibre/linux.py>”中查看``entry_points``结构_。

en: If you need help understanding the code, post in the `development forum <https://www.mobileread.com/forums/forumdisplay.php?f=240>`_ and you will most likely get help from one of calibre's many developers.
zh_CN: 如果你不理解某些代码，你可以在`development forum <https://www.mobileread.com/forums/forumdisplay.php?f=240>`_中提出，你很可能会得到其他开发者的帮助。

en: Getting the code
zh_CN: 得到代码

en: You can get the calibre source code in two ways, using a version control system or directly downloading a :website_base:`tarball <dist/src>`.
zh_CN: 你可以通过两种方式获取calibre的源代码：使用版本控制系统或者直接下载:website_base:`源码<dist/src>`

en: calibre uses `Git <https://www.git-scm.com/>`_, a distributed version control system. Git is available on all the platforms calibre supports.  After installing Git, you can get the calibre source code with the command::
zh_CN: calibre使用`Git <https://www.git-scm.com/>`_，一个分布式版本控制系统。Git在所有calibre支持的平台上均可用。安装Git后，你就可以通过下面命令获得源码:

en: On Windows you will need the complete path name, that will be something like :file:`C:\\Program Files\\Git\\git.exe`.
zh_CN: 在 Windows 上，您将需要完整的路径名，类似于文件“C:\\Program Files\\Git\\git.exe”。

en: calibre is a very large project with a very long source control history, so the above can take a while (10 mins to an hour depending on your internet speed).
zh_CN: calibre是一个拥有很长时间版本管理历史的大项目，所以下载源码可能需要一点时间（10分钟到1小时，取决于你的网速）。

en: If you want to get the code faster, the source code for the latest release is always available as an :website_base:`archive <dist/src>`.
zh_CN: 如果你想更快地获取源码，可以从:website_base:`归档 <dist/src>`页面下载最新的版本。

en: To update a branch to the latest code, use the command::
zh_CN: 升级一个分支到最新版本，可以使用命令:

en: You can also browse the code at `GitHub <https://github.com/kovidgoyal/calibre>`_.
zh_CN: 你也可以从`GitHub <https://github.com/kovidgoyal/calibre>`_上获得源码。

en: Submitting your changes to be included
zh_CN: 提交要包含的修改

en: If you only plan to make a few small changes, you can make your changes and create a "merge directive" which you can then attach to a ticket in the calibre `bug tracker <https://bugs.launchpad.net/calibre>`_. To do this, make your changes, then run::
zh_CN: 如果你只计划做一些小修改，你可以做出修改并创建一个"merge directive"，然后将其附加到calibre的`bug tracker <https://bugs.launchpad.net/calibre>`_中。如果需要这样做，可以使用下列命令:

en: This will create a :file:`my-changes` file in the current folder, simply attach that to a ticket on the calibre `bug tracker <https://bugs.launchpad.net/calibre>`_. Note that this will include *all* the commits you have made. If you only want to send some commits, you have to change ``origin/master`` above. To send only the last commit, use::
zh_CN: 这将在当前文件夹中创建一个文件：`my changes'文件，只需将其附加到calibre `bug tracker上的票证上即可<https://bugs.launchpad.net/calibre>`_。请注意，这将包括您所做的所有提交。如果您只想发送一些提交，则必须更改上面的“origin/master”。要只发送最后一次提交，请使用：

en: To send the last *n* commits, replace *1* with *n*, for example, for the last 3 commits::
zh_CN: 要发送最后 *n* 次提交，请将 *1* 替换为 *n*，例如，对于最后 3 次提交：

en: Be careful to not include merges when using ``HEAD~n``.
zh_CN: 当使用``HEAD~n``时，小心不要包含合并。

en: If you plan to do a lot of development on calibre, then the best method is to create a `GitHub <https://github.com>`__ account. Below is a basic guide to setting up your own fork of calibre in a way that will allow you to submit pull requests for inclusion into the main calibre repository:
zh_CN: 如果您计划在 calibre 上进行大量开发，那么最好的方法是创建一个 `GitHub <https://github.com>`__ 帐户。 以下是设置您自己的 calibre 分支的基本指南，该指南允许您提交拉取请求以包含到主 calibre 存储库中：

en: Setup git on your machine as described in this article: `Setup Git <https://help.github.com/articles/set-up-git>`_
zh_CN: 按这篇文章在你的电脑上安装git:`Setup Git <https://help.github.com/articles/set-up-git>`_

en: Setup ssh keys for authentication to GitHub, as described here: `Generating SSH keys <https://help.github.com/articles/generating-ssh-keys>`_
zh_CN: 设置ssh密钥以进行GitHub身份验证，参考这里:`Generating SSH keys <https://help.github.com/articles/generating-ssh-keys>`_

en: Go to https://github.com/kovidgoyal/calibre and click the :guilabel:`Fork` button.
zh_CN: 访问 https://github.com/kovidgoyal/calibre 并单击“Fork”按钮。

en: In a Terminal do::
zh_CN: 在终端下这样做:

en: Replace <username> above with your GitHub username. That will get your fork checked out locally.
zh_CN: 用你的GitHub用户名代替<username>。这将使本地校验你的分支。

en: You can make changes and commit them whenever you like. When you are ready to have your work merged, do a::
zh_CN: 无论何时你都能修改代码并提交。当你准备好待合并部分时，这样做:

en: and go to ``https://github.com/<username>/calibre`` and click the :guilabel:`Pull Request` button to generate a pull request that can be merged.
zh_CN: 进入 ``https://github.com/<username>/calibre`` 点击 :guilabel:`Pull Request` 按钮，产生一个可被合并的pull请求。

en: You can update your local copy with code from the main repo at any time by doing::
zh_CN: 你能从主仓库中更新你的本地代码副本，使用:

en: You should also keep an eye on the calibre `development forum <https://www.mobileread.com/forums/forumdisplay.php?f=240>`_. Before making major changes, you should discuss them in the forum or contact Kovid directly (his email address is all over the source code).
zh_CN: 您还应该关注 calibre `开发论坛 <https://www.mobileread.com/forums/forumdisplay.php?f=240>`_。 在进行重大更改之前，您应该在论坛中讨论它们或直接联系 Kovid（他的电子邮件地址遍布源代码）。

en: Windows development environment
zh_CN: Windows开发环境

en: You must also get the calibre source code separately as described above.
zh_CN: 你必须想上文所述的那样先得到calibre的源码。

en: Install calibre normally, using the `Windows installer <https://calibre-ebook.com/download_windows>`__. Then open a Command Prompt and change to the previously checked out calibre code folder. For example::
zh_CN: 正常安装Calibre，使用`Windows Installer<https://calibre-ebook.com/download_windows>`__。然后打开命令提示符并切换到先前检出的口径代码文件夹。例如：

en: calibre is the folder that contains the src and resources sub-folders.
zh_CN: Calibre是包含src和resource子文件夹的文件夹。

en: The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src folder. So, following the example above, it would be ``C:\Users\kovid\work\calibre\src``. `Here is a short guide <https://docs.python.org/using/windows.html#excursus-setting-environment-variables>`_ to setting environment variables on Windows.
zh_CN: 下一步是将环境变量``CALIBRE_DEVELOP_FROM``设置为src文件夹的绝对路径。因此，按照上面的示例，它应该是``C:\Users\kovid\work\calibre\src`。以下是<https://docs.python.org/using/windows.html#excursus-setting-environment-variables>`_在Windows上设置环境变量的简短指南。

en: Once you have set the environment variable, open a new command prompt and check that it was correctly set by using the command::
zh_CN: 一旦你设置了环境变量，你可以打开一个新的命令行，通过下面的命令检查环境变量是否设置成功:

en: Setting this environment variable means that calibre will now load all its Python code from the specified location.
zh_CN: 设置环境变量意味着calibre现在可以从指定位置载入它的所有Python代码。

en: That's it! You are now ready to start hacking on the calibre code. For example, open the file :file:`src\\calibre\\__init__.py` in your favorite editor and add the line::
zh_CN: 就是这样！你已经可以开始为calibre编写代码了。举例。用你最喜欢的编辑器打开文件 :file:`src\\calibre\\__init__.py` ，在文件开头添加这么一行:

en: near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
zh_CN: 靠近文件顶部。 现在运行命令“calibredb”。 输出的第一行应该是“Hello, world!”。

en: You can also setup a calibre development environment inside the free Microsoft Visual Studio, if you like, following the instructions `here <https://www.mobileread.com/forums/showthread.php?t=251201>`_.
zh_CN: 你也可以通过Microsoft Visual Studio建立calibre开发环境。如果你希望这么做，可以参考这里的教程 `here <https://www.mobileread.com/forums/showthread.php?t=251201>`_ 。

en: macOS development environment
zh_CN: macOS开发环境

en: Install calibre normally using the `provided .dmg <https://calibre-ebook.com/download_osx>`__. Then open a Terminal and change to the previously checked out calibre code folder, for example::
zh_CN: 使用`提供的.dmg<https://calibre-ebook.com/download_osx>`__.正常安装Calibre。然后打开终端并切换到之前检出的口径代码文件夹，例如：

en: calibre is the folder that contains the src and resources sub-folders. The calibre command line tools are found inside the calibre app bundle, in :file:`/Applications/calibre.app/Contents/MacOS` you should add this folder to your PATH environment variable, if you want to run the command line tools easily.
zh_CN: Calibre是包含src和resource子文件夹的文件夹。Calibre命令行工具位于Calibre应用程序包中，在：file:`/Applications/calibre.app/Contents/MacOS`中，如果您希望轻松运行命令行工具，则应将此文件夹添加到PATH环境变量中。

en: The next step is to create a bash script that will set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src folder when running calibre in debug mode.
zh_CN: 下一步是创建一个bash脚本，该脚本将在调试模式下运行Calibre时将环境变量``CALIBRE_DEVELOP_FROM``设置为src文件夹的绝对路径。

en: Create a plain text file::
zh_CN: 创建一个空文本文件:

en: Save this file as :file:`/usr/local/bin/calibre-develop`, then set its permissions so that it can be executed::
zh_CN: 将此文件保存为 “/usr/local/bin/calibre-develop”，然后设置其权限以便可以执行:

en: Once you have done this, run::
zh_CN: 一旦你完成上述步骤，然后可以运行:

en: You should see some diagnostic information in the Terminal window as calibre starts up, and you should see an asterisk after the version number in the GUI window, indicating that you are running from source.
zh_CN: 当calibre启动时，你最好看终端上的诊断信息。你也应该注意到GUI界面的版本后有一个*号，这表示你从源码运行程序。

en: Linux development environment
zh_CN: Linux开发环境

en: calibre is primarily developed on Linux. You have two choices in setting up the development environment. You can install the calibre binary as normal and use that as a runtime environment to do your development. This approach is similar to that used in Windows and macOS. Alternatively, you can install calibre from source. Instructions for setting up a development environment from source are in the INSTALL file in the source tree. Here we will address using the binary as a runtime, which is the recommended method.
zh_CN: calibre主要开发环境是Linux。你有两种方法配置开发环境。你可以正常安装calibre，在运行时环境下完成开发。这个方法与Windows与macOS开发类似。或者，从源码进行安装calibre。从源码配置开发环境的命令在源码树中的INSTALL文件。接下来我们将使用第一种方法，这也是推荐的方法。

en: Install calibre using the `binary installer <https://calibre-ebook.com/download_linux>`_. Then open a terminal and change to the previously checked out calibre code folder, for example::
zh_CN: 使用`二进制安装程序<https://calibre-ebook.com/download_linux>`_.安装Calibre。然后打开终端，切换到之前检出的calibre代码文件夹，例如：

en: The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src folder. So, following the example above, it would be ``/home/kovid/work/calibre/src``. How to set environment variables depends on your Linux distribution and what shell you are using.
zh_CN: 下一步是将环境变量``CALIBRE_DEPLE_FROM``设置为src文件夹的绝对路径。因此，按照上面的示例，它应该是``/home/kovid/work/calibre/src``。如何设置环境变量取决于您的Linux发行版以及您使用的是什么Shell。

en: It is recommended to use the binary installer provided from upstream. Should you insist on using a package provided by your distribution, use the ``CALIBRE_PYTHON_PATH`` and ``CALIBRE_RESOURCES_PATH`` variables instead. You can get these by running ``calibre-debug --paths``. But note that distribution calibre packages are often terminally broken and are completely unsupported.
zh_CN: 建议使用上游提供的二进制安装程序。如果您坚持使用发行版提供的软件包，请改用“CALIBRE_PYTHON_PATH”和“CALIBRE_RESOURCES_PATH”变量。您可以通过运行“calibre-debug --paths”获取这些变量。但请注意，发行版中的 calibre 软件包通常存在问题，并且完全不受支持。

en: Once you have set the environment variable, open a new terminal and check that it was correctly set by using the command::
zh_CN: 一旦你设置了环境变量，打开一个新终端，检查环境变量是否设置正确，使用命令:

en: That's it! You are now ready to start hacking on the calibre code. For example, open the file :file:`src/calibre/__init__.py` in your favorite editor and add the line::
zh_CN: 就是这样！ 现在您已准备好开始破解 calibre 代码。 例如，在您喜欢的编辑器中打开文件  “src/calibre/__init__.py”并添加以下行：

en: Having separate "normal" and "development" calibre installs on the same computer
zh_CN: 在一台电脑上同时安装正常模式与开发模式的calibre

en: The calibre source tree is very stable and rarely breaks, but if you feel the need to run from source on a separate test library and run the released calibre version with your everyday library, you can achieve this easily using .bat files or shell scripts to launch calibre. The example below shows how to do this on Windows using .bat files (the instructions for other platforms are the same, just use a shell script instead of a .bat file)
zh_CN: calibre源码树非常稳定，很少崩溃，但如果你需要从源码运行一个测试书库并且你还要运行released版本的calibre作为日常使用。你能方便地通过批处理文件或者shell脚本启动calibre。下面的例子展示如何在Windows上通过批处理文件启动calibre(其他平台的命令也是一样的，只是用shell脚本代替批处理文件)。

en: To launch the release version of calibre with your everyday library:
zh_CN: 用常用库启动发布版本的calibre:

en: calibre-normal.bat::
zh_CN: calibre-normal.bat:

en: calibre-dev.bat::
zh_CN: calibre-dev.bat:

en: Debugging tips
zh_CN: Debug技巧

en: Python is a dynamically typed language with excellent facilities for introspection. Kovid wrote the core calibre code without once using a debugger. There are many strategies to debug calibre code:
zh_CN: Python 是一门拥有动态类型的编程语言。它拥有着出色的内省功能。 Kovid 在没有使用调试器的情况下，完成了calibre的核心代码。这里给出一些debug的策略:

en: Using print statements
zh_CN: 使用print语句

en: This is Kovid's favorite way to debug. Simply insert print statements at points of interest and run your program in the terminal. For example, you can start the GUI from the terminal as::
zh_CN: 这是Kovid最喜欢的Debug方式。只需要在目标点插入print语句，然后在终端运行程序。举例，你能从终端打开GUI界面，像这样:

en: Similarly, you can start the E-book viewer as::
zh_CN: 同样，您可以通过以下方式启动电子书阅读器：

en: The e-book editor can be started as::
zh_CN: 可以通过以下方式启动电子书编辑器：

en: Using an interactive Python interpreter
zh_CN: 使用交互式Python解释器

en: You can insert the following two lines of code to start an interactive Python session at that point::
zh_CN: 你可以插入下面两行代码开启一个交互式Python会话:

en: When running from the command line, this will start an interactive Python interpreter with access to all locally defined variables (variables in the local scope). The interactive prompt even has :kbd:`Tab` completion for object properties and you can use the various Python facilities for introspection, such as :func:`dir`, :func:`type`, :func:`repr`, etc.
zh_CN: 当从命令行运行时，这将启动一个交互式的Python解释器，可以访问所有本地定义的变量(本地作用域中的变量)。交互提示符甚至有：按键“Tab”对象属性补全，可以使用各种Python工具进行自省，如“dir”、“type”、“repr”等。

en: Using the Python debugger as a remote debugger
zh_CN: 使用Python调试器作为远程调试器

en: You can use the builtin Python debugger (pdb) as a remote debugger from the command line. First, start the remote debugger at the point in the calibre code you are interested in, like this::
zh_CN: 您可以从命令行使用内置 Python 调试器 (pdb) 作为远程调试器。 首先，在您感兴趣的 calibre 代码中启动远程调试器，如下所示：

en: Then run calibre, either as normal, or using one of the calibre-debug commands described in the previous section. Once the above point in the code is reached, calibre will freeze, waiting for the debugger to connect.
zh_CN: 然后运行calibre，正常运行，或者使用上文提到的calibre-debug命令。一旦上述代码完成，calibre会停止，等待调试器的连接。

en: Now open a terminal or command prompt and use the following command to start the debugging session::
zh_CN: 现在打开一个终端或者命令提示符，使用下列命令打开debug会话:

en: You can read about how to use the Python debugger in the `Python stdlib docs for the pdb module <https://docs.python.org/library/pdb.html#debugger-commands>`_.
zh_CN: 您可以在`关于PDB模块的Python stdlib文档<https://docs.python.org/library/pdb.html#debugger-commands>中`了解如何使用Python调试器。

en: By default, the remote debugger will try to connect on port 4444. You can change it, by passing the port parameter to both the set_trace() and the cli() functions above, like this: ``set_trace(port=1234)`` and ``cli(port=1234)``.
zh_CN: 默认情况下，远程调试器连接到端口4444。你也可以通过设置 set_trace() 与 cli() 函数更换端口，像这样: ``set_trace(port=1234)`` and ``cli(port=1234)``。

en: The Python debugger cannot handle multiple threads, so you have to call set_trace once per thread, each time with a different port number.
zh_CN: Python调试器不能控制多线程，所以你不得不在每个线程中使用 set_trace 函数一次，每次都得用一个不同的端口号。

en: Using the debugger in your favorite Python IDE
zh_CN: 在自己的IDE环境下使用调试器

en: It is possible to use the builtin debugger in your favorite Python IDE, if it supports remote debugging. The first step is to add the calibre src checkout to the ``PYTHONPATH`` in your IDE. In other words, the folder you set as ``CALIBRE_DEVELOP_FROM`` above, must also be in the ``PYTHONPATH`` of your IDE.
zh_CN: 如果内置调试器支持远程调试，则可以在您最喜欢的Python IDE中使用它。第一步是将Calibre src检出添加到IDE中的``PYTHONPATH``中。换句话说，您在上面设置为``CALIBRE_DEVELOP_FROM``的文件夹也必须位于您的IDE的``PYTHONPATH`中。

en: Then place the IDE's remote debugger module into the :file:`src` sub-folder of the calibre source code checkout. Add whatever code is needed to launch the remote debugger to calibre at the point of interest, for example in the main function. Then run calibre as normal. Your IDE should now be able to connect to the remote debugger running inside calibre.
zh_CN: 然后将IDE的远程调试器模块放入calibre源代码检测的“src”子文件夹中。 添加启动远程调试器所需的任何代码，以在感兴趣的位置进行校准，例如在主函数中。 然后正常运行 calibre。 您的 IDE 现在应该能够连接到在 calibre 内运行的远程调试器。

en: Executing arbitrary scripts in the calibre Python environment
zh_CN: 在calibre的Python环境中执行任意脚本

en: The :command:`calibre-debug` command provides a couple of handy switches to execute your own code, with access to the calibre modules::
zh_CN: `calibre-debug`  提供了一些方便的开关来执行你自己的代码，并且可以访问calibre模块:

en: is great for testing a little snippet of code on the command line. It works in the same way as the -c switch to the Python interpreter::
zh_CN: 非常适合在命令行上测试一小段代码。它的工作方式与-c切换至Python解释器的方式相同：

en: can be used to execute your own Python script. It works in the same way as passing the script to the Python interpreter, except that the calibre environment is fully initialized, so you can use all the calibre code in your script. To use command line arguments with your script, use the form::
zh_CN: 可以用来执行自己的Python脚本。 除了完全初始化calibre环境外，它的工作方式与将脚本传递给Python解释器的方式相同，因此您可以在脚本中使用所有calibre代码。 要在脚本中使用命令行参数，请使用以下格式：

en: The ``--`` causes all subsequent arguments to be passed to your script.
zh_CN: ``--`` 会使后面的所有参数被传到你的脚本里。

en: Using calibre in your projects
zh_CN: 在你的项目中使用calibre

en: It is possible to directly use calibre functions/code in your Python project. Two ways exist to do this:
zh_CN: 在你的Python项目中可以直接使用calibre的功能与代码。有两种方法可以这么做:

en: Binary install of calibre
zh_CN: 二进制安装calibre

en: If you have a binary install of calibre, you can use the Python interpreter bundled with calibre, like this::
zh_CN: 如果您有calibre的二进制安装，则可以使用calibre附带的Python解释器，如下所示：

en: Source install on Linux
zh_CN: Linux源码安装

en: In addition to using the above technique, if you do a source install on Linux, you can also directly import calibre, as follows::
zh_CN: 除了使用上面的技巧，如果你在Linux中进行源码安装，你可以直接import calibre，就像下面这样:

en: It is essential that you import the init_calibre module before any other calibre modules/packages as it sets up the interpreter to run calibre code.
zh_CN: 在将init_calibre模块设置为运行calibre代码的解释器之前，必须先导入init_calibre模块，然后再输入其他calibre模块/软件包。

en: API documentation for various parts of calibre
zh_CN: calibre丰富的API文档
