{"id":16604,"date":"2025-07-13T08:43:27","date_gmt":"2025-07-13T06:43:27","guid":{"rendered":"https:\/\/www.beseit.net\/?p=16604"},"modified":"2026-05-01T12:54:39","modified_gmt":"2026-05-01T10:54:39","slug":"configurar-un-entorn-virtual-de-python-al-meu-synology-nas-network-attached-storage","status":"publish","type":"post","link":"http:\/\/www.beseit.net\/?p=16604","title":{"rendered":"<span>\u2b50<\/span> Configurar un entorn virtual de Python al meu Synology NAS (Network Attached Storage)"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">? Configurar un entorn virtual de Python al meu Synology NAS (Network Attached Storage)<\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#eb0a0a\" class=\"has-inline-color\">Crear entorn virtual de Python utilitzant SSH<\/mark>. Quan s&#8217;utilitzen en un entorn virtual, les eines d&#8217;instal\u00b7laci\u00f3 comunes com a pip instal\u00b7laran autom\u00e0ticament els paquets de Python en l&#8217;entorn virtual, en lloc d&#8217;instal\u00b7lar-los globalment en el sistema.<\/p>\n\n\n\n<p>Aix\u00f2 li permet crear un entorn a\u00efllat amb el seu propi conjunt de paquets, independentment de la instal\u00b7laci\u00f3 global de Python del sistema o de qualsevol altre entorn virtual que pugui tenir.<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f20d0d\" class=\"has-inline-color\">Pasos:<\/mark><\/p>\n\n\n\n<p>Iniciar sessi\u00f3 amb SSH<br>En el seu PC, utilitzi SSH per iniciar sessi\u00f3 al seu NAS amb privilegis de root.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -i \n\nurqtejmi@Synology_sec:\/$ sudo -i\nPassword:\n<mark style=\"background-color:rgba(0, 0, 0, 0);color:#ea1212\" class=\"has-inline-color\">root<\/mark>@Synology_sec:~#<\/code><\/pre>\n\n\n\n<p>Seleccioni la versi\u00f3 de Python<br>Introdueixi el seg\u00fcent comandament per comprovar quines versions de paquets de Python estan instal\u00b7lades al seu NAS<\/p>\n\n\n\n<p>compgen -c python <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compgen: \u00e9s una eina interna del shell que genera llistes de comandes\n\n<mark style=\"background-color:rgba(0, 0, 0, 0);color:#f40c0c\" class=\"has-inline-color\">compgen -c python<\/mark>\n-c: indica que volem veure comandes disponibles\n\npython: \u00e9s el prefix que estem cercant<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">? Canvia-te a la carpeta on vols crear l&#8217;entorn1<\/h3>\n\n\n\n<p>cd \/volume1\/web\/ssh_prova<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">urqtejmi@Synology_sec:\/volume1\/web\/00-sapi_tts$ -&gt; \/volume1\/web\/edge_tts$ <\/h2>\n\n\n\n<p>rsync -aH &#8211;progress .\/ \/volume1\/web\/edge_tts\/<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">? Crea l&#8217;entorn virtual amb Python 3.9<\/h3>\n\n\n\n<p> python3.9 -m venv myenv<\/p>\n\n\n\n<p>Aix\u00f2 crear\u00e0 una carpeta anomenada <code>myenv<\/code> (pots canviar el nom si vols) amb una c\u00f2pia a\u00efllada de Python 3.9 i <code>pip<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Quan crees un entorn virtual amb:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:48px\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f31a1a\" class=\"has-inline-color\">python3.9 -m venv <\/mark>env_tts<\/h2>\n\n\n\n<p>python3.9 -m venv venv_web<\/p>\n\n\n\n<p><strong>? Activa l&#8217;entorn virtual<\/strong><\/p>\n\n\n\n<p>source env_tts\/bin\/<mark style=\"background-color:rgba(0, 0, 0, 0);color:#f10c0c\" class=\"has-inline-color\">activate<\/mark><\/p>\n\n\n\n<p>si hi ha problemes provar: <mark style=\"background-color:rgba(0, 0, 0, 0);color:#eb0404\" class=\"has-inline-color\">source venv_web\/bin\/activate<\/mark><\/p>\n\n\n\n<p>esborrar entorn: <mark style=\"background-color:rgba(0, 0, 0, 0);color:#f10303\" class=\"has-inline-color\">rm -r myenv<\/mark><\/p>\n\n\n\n<p>esborrar entorn: <mark style=\"background-color:rgba(0, 0, 0, 0);color:#f10303\" class=\"has-inline-color\">rm -r <\/mark>venv_web<\/p>\n\n\n\n<p>Canvia de nom: <mark style=\"background-color:rgba(0, 0, 0, 0);color:#f00d0d\" class=\"has-inline-color\">env_tts\/bin\/activate<\/mark><\/p>\n\n\n\n<p>Canvia de nom: <mark style=\"background-color:rgba(0, 0, 0, 0);color:#f00d0d\" class=\"has-inline-color\">venv_web\/bin\/activate<\/mark> &#8211;> comprovar quin entror virtual hi ha creat (dr-xr-xr-x+ 1 urqtejmi users 56 Jul 20 11:23 venv_web)<\/p>\n\n\n\n<p>root@syn_beseit:\/volume1\/web\/edge_tts# source myenv\/bin\/activate<br>(myenv) root@syn_beseit:\/volume1\/web\/edge_tts# python &#8211;version<br>Python 3.9.14<br>(myenv) root@syn_beseit:\/volume1\/web\/edge_tts#<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>deactivate<\/code><\/pre>\n\n\n\n<p>&#8230;l&#8217;entorn ja ve amb <code><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f60e0e\" class=\"has-inline-color\">pip<\/mark><\/code> i <code>setuptools<\/code> <strong>instal\u00b7lats per defecte <\/strong>, des de Python 3.4 en endavant (que \u00e9s quan es va afegir el m\u00f2dul <code>venv<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading alignwide\" id=\"we-re-a-studio-in-berlin-with-an-international-practice-in-architecture-urban-planning-and-interior-design-we-believe-in-sharing-knowledge-and-promoting-dialogue-to-increase-the-creative-potential-of-collaboration\" style=\"font-size:48px;line-height:1.1\">instal\u00b7lar <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">edge_tts<\/mark> i <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">gtts<\/mark> al entorn <strong> <\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install edge-tts gTTS\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><a href=\"https:\/\/github.com\/rany2\/edge-tts\" target=\"_blank\" rel=\"noreferrer noopener\"><code>edge-tts<\/code><\/a><\/td><td>Utilitza el servei de veu sintetitzada de Microsoft Azure (gratu\u00eft, sense clau d&#8217;API).<\/td><\/tr><tr><td><a href=\"https:\/\/gtts.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\"><code>gTTS<\/code><\/a><\/td><td>Google Text-to-Speech: genera \u00e0udio a partir de text utilitzant els serveis de Google.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">? Llista de veus disponibles a <code>edge-tts<\/code><\/h2>\n\n\n\n<p><strong>Executa gTTS amb idioma catal\u00e0 (codi <\/strong><code>ca<\/code><strong>)<\/strong>:  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#e91414\" class=\"has-inline-color\">Quan executes aquesta comanda dins de l&#8217;entorn virtual activat (<code>(env_tts)<\/code><\/mark><\/h2>\n\n\n\n<p><code>pip install gTTS<\/code> dins de <code>env_tts<\/code>, la biblioteca s\u2019ha instal\u00b7lat en:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/volume1\/web\/edge_tts\/env_tts\/lib\/python3.9\/site-packages\/gtts\nQuan fas python -c \"...gTTS(...)\", el Python que est\u00e0s usant \u00e9s el de\n\n<mark style=\"background-color:rgba(0, 0, 0, 0);color:#f20e0e\" class=\"has-inline-color\">\/volume1\/web\/edge_tts\/env_tts\/bin\/python3.9<\/mark>\n\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>python -c \"from gtts import gTTS; gTTS(text='Hola, soc de Sant Cugat', lang='ca').save('tts.mp3')\"\n\n(env_tts) root@Synology_sec:\/volume1\/web\/edge_tts\/env_tts# python -c \"from gtts import gTTS; gTTS(text='Hola, soc de Sant Cugat', lang='ca').<mark style=\"background-color:rgba(0, 0, 0, 0);color:#ed0b0b\" class=\"has-inline-color\">save('tts.mp3')\"<\/mark>\n(env_tts) root@Synology_sec:\/volume1\/web\/edge_tts\/env_tts#<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>? Configurar un entorn virtual de Python al meu Synology NAS (Network Attached Storage) Crear entorn virtual de Python utilitzant SSH. Quan s&#8217;utilitzen en un entorn virtual, les eines d&#8217;instal\u00b7laci\u00f3 comunes com a pip instal\u00b7laran autom\u00e0ticament els paquets de Python &hellip; <a href=\"http:\/\/www.beseit.net\/?p=16604\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":3167,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[187],"tags":[],"class_list":["post-16604","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-putty-ssh"],"_links":{"self":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16604"}],"version-history":[{"count":18,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16604\/revisions"}],"predecessor-version":[{"id":18020,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/16604\/revisions\/18020"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/3167"}],"wp:attachment":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16604"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}