poetry icon indicating copy to clipboard operation
poetry copied to clipboard

`poetry install` does not respect `virtualenvs.options` in "ephemeral environments"

Open ElectronicRU opened this issue 1 year ago • 7 comments

Description

I'm deploying inside a Docker container that doesn't allow symlinks to global Python executable. I've been able to navigate around this issue using an always-copy flag for virtualenv.

However, when I'm running poetry install, judging by the stack trace, it creates an "ephemeral environment" (for build-dependencies? I am not sure), in which flags are ignored, and it all fails with an OSError.

Workarounds

I've been able to export VIRTUALENV_ALWAYS_COPY=true to get the desired behaviour.

Poetry Installation Method

pipx

Operating System

Ubuntu

Poetry Version

Poetry (version 1.8.1)

Poetry Configuration

cache-dir = "/home/k/kirtloic/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = true
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/k/kirtloic/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

Platform: "linux-x86_64"
Python version: "3.10"
Current installation scheme: "posix_local"

Paths: 
	data = "/usr/local"
	include = "/usr/include/python3.10"
	platinclude = "/usr/include/python3.10"
	platlib = "/usr/local/lib/python3.10/dist-packages"
	platstdlib = "/usr/lib/python3.10"
	purelib = "/usr/local/lib/python3.10/dist-packages"
	scripts = "/usr/local/bin"
	stdlib = "/usr/lib/python3.10"

Variables: 
	ABIFLAGS = ""
	AC_APPLE_UNIVERSAL_BUILD = "0"
	AIX_BUILDDATE = "0"
	AIX_GENUINE_CPLUSPLUS = "0"
	ALIGNOF_LONG = "8"
	ALIGNOF_SIZE_T = "8"
	ALT_SOABI = "0"
	ANDROID_API_LEVEL = "0"
	AR = "x86_64-linux-gnu-gcc-ar"
	ARFLAGS = "rcs"
	BASECFLAGS = "-Wno-unused-result -Wsign-compare"
	BASECPPFLAGS = "-IObjects -IInclude -IPython"
	BASEMODLIBS = ""
	BINDIR = "/usr/bin"
	BINLIBDEST = "/usr/lib/x86_64-linux-gnu/python3.10"
	BLDLIBRARY = "-lpython3.10"
	BLDSHARED = "x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	BUILDEXE = ""
	BUILDPYTHON = "python"
	BUILD_GNU_TYPE = "x86_64-pc-linux-gnu"
	BYTESTR_DEPS = "\"
	CC = "x86_64-linux-gnu-gcc"
	CCSHARED = "-fPIC"
	CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g       -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2   "
	CFLAGSFORSHARED = "-fPIC"
	CFLAGS_ALIASING = ""
	CFLAGS_NODIST = ""
	CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
	CONFIGURE_CFLAGS = "-g       -fstack-protector-strong -Wformat -Werror=format-security"
	CONFIGURE_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden"
	CONFIGURE_CPPFLAGS = "-Wdate-time -D_FORTIFY_SOURCE=2"
	CONFIGURE_LDFLAGS = "-Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	CONFIGURE_LDFLAGS_NODIST = ""
	CONFIG_ARGS = "'--enable-shared' '--prefix=/usr' '--libdir=/usr/lib/x86_64-linux-gnu' '--enable-ipv6' '--enable-loadable-sqlite-extensions' '--with-dbmliborder=bdb:gdbm' '--with-computed-gotos' '--without-ensurepip' '--with-system-expat' '--with-dtrace' '--with-system-libmpdec' '--with-wheel-pkg-dir=/usr/share/python-wheels/' 'MKDIR_P=/bin/mkdir -p' '--with-system-ffi' 'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-g       -fstack-protector-strong -Wformat -Werror=format-security ' 'LDFLAGS=-Wl,-Bsymbolic-functions      -g -fwrapv -O2   ' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'"
	CONFINCLUDEDIR = "/usr/include"
	CONFINCLUDEPY = "/usr/include/python3.10"
	COREPYTHONPATH = ""
	COVERAGE_INFO = "/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared/coverage.info"
	COVERAGE_REPORT = "/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared/lcov-report"
	COVERAGE_REPORT_OPTIONS = "--no-branch-coverage --title "CPython lcov report""
	CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2"
	CXX = "x86_64-linux-gnu-g++"
	DESTDIRS = "/usr /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/python3.10 /usr/lib/python3.10/lib-dynload"
	DESTLIB = "/usr/lib/python3.10"
	DESTPATH = ""
	DESTSHARED = "/usr/lib/python3.10/lib-dynload"
	DFLAGS = ""
	DIRMODE = "755"
	DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy"
	DISTDIRS = "Include Lib Misc Ext-dummy"
	DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in"
	DLINCLDIR = "."
	DLLLIBRARY = ""
	DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0"
	DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0"
	DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1"
	DTRACE = "/usr/bin/dtrace"
	DTRACE_DEPS = "\"
	DTRACE_HEADERS = "Include/pydtrace_probes.h"
	DTRACE_OBJS = "Python/pydtrace.o"
	DYNLOADFILE = "dynload_shlib.o"
	ENABLE_IPV6 = "1"
	ENSUREPIP = "no"
	EXE = ""
	EXEMODE = "755"
	EXPERIMENTAL_ISOLATED_SUBINTERPRETERS = "0"
	EXPORTSFROM = ""
	EXPORTSYMS = ""
	EXTRATESTOPTS = ""
	EXT_SUFFIX = ".cpython-310-x86_64-linux-gnu.so"
	FILEMODE = "644"
	FLOAT_WORDS_BIGENDIAN = "0"
	FLOCK_NEEDS_LIBBSD = "0"
	GETPGRP_HAVE_ARG = "0"
	GITBRANCH = ""
	GITTAG = ""
	GITVERSION = ""
	GNULD = "yes"
	HAVE_ACCEPT4 = "1"
	HAVE_ACOSH = "1"
	HAVE_ADDRINFO = "1"
	HAVE_ALARM = "1"
	HAVE_ALIGNED_REQUIRED = "0"
	HAVE_ALLOCA_H = "1"
	HAVE_ALTZONE = "0"
	HAVE_ASINH = "1"
	HAVE_ASM_TYPES_H = "1"
	HAVE_ATANH = "1"
	HAVE_BIND_TEXTDOMAIN_CODESET = "1"
	HAVE_BLUETOOTH_BLUETOOTH_H = "1"
	HAVE_BLUETOOTH_H = "0"
	HAVE_BROKEN_MBSTOWCS = "0"
	HAVE_BROKEN_NICE = "0"
	HAVE_BROKEN_PIPE_BUF = "0"
	HAVE_BROKEN_POLL = "0"
	HAVE_BROKEN_POSIX_SEMAPHORES = "0"
	HAVE_BROKEN_PTHREAD_SIGMASK = "0"
	HAVE_BROKEN_SEM_GETVALUE = "0"
	HAVE_BROKEN_UNSETENV = "0"
	HAVE_BUILTIN_ATOMIC = "1"
	HAVE_CHFLAGS = "0"
	HAVE_CHOWN = "1"
	HAVE_CHROOT = "1"
	HAVE_CLOCK = "1"
	HAVE_CLOCK_GETRES = "1"
	HAVE_CLOCK_GETTIME = "1"
	HAVE_CLOCK_SETTIME = "1"
	HAVE_CLOSE_RANGE = "1"
	HAVE_COMPUTED_GOTOS = "1"
	HAVE_CONFSTR = "1"
	HAVE_CONIO_H = "0"
	HAVE_COPYSIGN = "1"
	HAVE_COPY_FILE_RANGE = "1"
	HAVE_CRYPT_H = "1"
	HAVE_CRYPT_R = "1"
	HAVE_CTERMID = "1"
	HAVE_CTERMID_R = "0"
	HAVE_CURSES_FILTER = "1"
	HAVE_CURSES_H = "1"
	HAVE_CURSES_HAS_KEY = "1"
	HAVE_CURSES_IMMEDOK = "1"
	HAVE_CURSES_IS_PAD = "1"
	HAVE_CURSES_IS_TERM_RESIZED = "1"
	HAVE_CURSES_RESIZETERM = "1"
	HAVE_CURSES_RESIZE_TERM = "1"
	HAVE_CURSES_SYNCOK = "1"
	HAVE_CURSES_TYPEAHEAD = "1"
	HAVE_CURSES_USE_ENV = "1"
	HAVE_CURSES_WCHGAT = "1"
	HAVE_DECL_ISFINITE = "1"
	HAVE_DECL_ISINF = "1"
	HAVE_DECL_ISNAN = "1"
	HAVE_DECL_RTLD_DEEPBIND = "1"
	HAVE_DECL_RTLD_GLOBAL = "1"
	HAVE_DECL_RTLD_LAZY = "1"
	HAVE_DECL_RTLD_LOCAL = "1"
	HAVE_DECL_RTLD_MEMBER = "0"
	HAVE_DECL_RTLD_NODELETE = "1"
	HAVE_DECL_RTLD_NOLOAD = "1"
	HAVE_DECL_RTLD_NOW = "1"
	HAVE_DECL_TZNAME = "0"
	HAVE_DEVICE_MACROS = "1"
	HAVE_DEV_PTC = "0"
	HAVE_DEV_PTMX = "1"
	HAVE_DIRECT_H = "0"
	HAVE_DIRENT_D_TYPE = "1"
	HAVE_DIRENT_H = "1"
	HAVE_DIRFD = "1"
	HAVE_DLFCN_H = "1"
	HAVE_DLOPEN = "1"
	HAVE_DUP2 = "1"
	HAVE_DUP3 = "1"
	HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "0"
	HAVE_DYNAMIC_LOADING = "1"
	HAVE_ENDIAN_H = "1"
	HAVE_EPOLL = "1"
	HAVE_EPOLL_CREATE1 = "1"
	HAVE_ERF = "1"
	HAVE_ERFC = "1"
	HAVE_ERRNO_H = "1"
	HAVE_EVENTFD = "1"
	HAVE_EXECV = "1"
	HAVE_EXPLICIT_BZERO = "1"
	HAVE_EXPLICIT_MEMSET = "0"
	HAVE_EXPM1 = "1"
	HAVE_FACCESSAT = "1"
	HAVE_FCHDIR = "1"
	HAVE_FCHMOD = "1"
	HAVE_FCHMODAT = "1"
	HAVE_FCHOWN = "1"
	HAVE_FCHOWNAT = "1"
	HAVE_FCNTL_H = "1"
	HAVE_FDATASYNC = "1"
	HAVE_FDOPENDIR = "1"
	HAVE_FDWALK = "0"
	HAVE_FEXECVE = "1"
	HAVE_FINITE = "1"
	HAVE_FLOCK = "1"
	HAVE_FORK = "1"
	HAVE_FORKPTY = "1"
	HAVE_FPATHCONF = "1"
	HAVE_FSEEK64 = "0"
	HAVE_FSEEKO = "1"
	HAVE_FSTATAT = "1"
	HAVE_FSTATVFS = "1"
	HAVE_FSYNC = "1"
	HAVE_FTELL64 = "0"
	HAVE_FTELLO = "1"
	HAVE_FTIME = "1"
	HAVE_FTRUNCATE = "1"
	HAVE_FUTIMENS = "1"
	HAVE_FUTIMES = "1"
	HAVE_FUTIMESAT = "1"
	HAVE_GAI_STRERROR = "1"
	HAVE_GAMMA = "1"
	HAVE_GCC_ASM_FOR_MC68881 = "0"
	HAVE_GCC_ASM_FOR_X64 = "1"
	HAVE_GCC_ASM_FOR_X87 = "1"
	HAVE_GCC_UINT128_T = "1"
	HAVE_GETADDRINFO = "1"
	HAVE_GETC_UNLOCKED = "1"
	HAVE_GETENTROPY = "1"
	HAVE_GETGRGID_R = "1"
	HAVE_GETGRNAM_R = "1"
	HAVE_GETGROUPLIST = "1"
	HAVE_GETGROUPS = "1"
	HAVE_GETHOSTBYNAME = "0"
	HAVE_GETHOSTBYNAME_R = "1"
	HAVE_GETHOSTBYNAME_R_3_ARG = "0"
	HAVE_GETHOSTBYNAME_R_5_ARG = "0"
	HAVE_GETHOSTBYNAME_R_6_ARG = "1"
	HAVE_GETITIMER = "1"
	HAVE_GETLOADAVG = "1"
	HAVE_GETLOGIN = "1"
	HAVE_GETNAMEINFO = "1"
	HAVE_GETPAGESIZE = "1"
	HAVE_GETPEERNAME = "1"
	HAVE_GETPGID = "1"
	HAVE_GETPGRP = "1"
	HAVE_GETPID = "1"
	HAVE_GETPRIORITY = "1"
	HAVE_GETPWENT = "1"
	HAVE_GETPWNAM_R = "1"
	HAVE_GETPWUID_R = "1"
	HAVE_GETRANDOM = "1"
	HAVE_GETRANDOM_SYSCALL = "1"
	HAVE_GETRESGID = "1"
	HAVE_GETRESUID = "1"
	HAVE_GETSID = "1"
	HAVE_GETSPENT = "1"
	HAVE_GETSPNAM = "1"
	HAVE_GETWD = "1"
	HAVE_GLIBC_MEMMOVE_BUG = "0"
	HAVE_GRP_H = "1"
	HAVE_HSTRERROR = "1"
	HAVE_HTOLE64 = "1"
	HAVE_HYPOT = "1"
	HAVE_IEEEFP_H = "0"
	HAVE_IF_NAMEINDEX = "1"
	HAVE_INET_ATON = "1"
	HAVE_INET_PTON = "1"
	HAVE_INITGROUPS = "1"
	HAVE_INTTYPES_H = "1"
	HAVE_IO_H = "0"
	HAVE_IPA_PURE_CONST_BUG = "0"
	HAVE_KILL = "1"
	HAVE_KILLPG = "1"
	HAVE_KQUEUE = "0"
	HAVE_LANGINFO_H = "1"
	HAVE_LARGEFILE_SUPPORT = "0"
	HAVE_LCHFLAGS = "0"
	HAVE_LCHMOD = "0"
	HAVE_LCHOWN = "1"
	HAVE_LGAMMA = "1"
	HAVE_LIBDL = "1"
	HAVE_LIBDLD = "0"
	HAVE_LIBIEEE = "0"
	HAVE_LIBINTL_H = "1"
	HAVE_LIBREADLINE = "1"
	HAVE_LIBRESOLV = "0"
	HAVE_LIBSENDFILE = "0"
	HAVE_LIBUTIL_H = "0"
	HAVE_LIBUUID = "1"
	HAVE_LINK = "1"
	HAVE_LINKAT = "1"
	HAVE_LINUX_AUXVEC_H = "1"
	HAVE_LINUX_CAN_BCM_H = "1"
	HAVE_LINUX_CAN_H = "1"
	HAVE_LINUX_CAN_J1939_H = "1"
	HAVE_LINUX_CAN_RAW_FD_FRAMES = "1"
	HAVE_LINUX_CAN_RAW_H = "1"
	HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "1"
	HAVE_LINUX_MEMFD_H = "1"
	HAVE_LINUX_NETLINK_H = "1"
	HAVE_LINUX_QRTR_H = "1"
	HAVE_LINUX_RANDOM_H = "1"
	HAVE_LINUX_TIPC_H = "1"
	HAVE_LINUX_VM_SOCKETS_H = "1"
	HAVE_LINUX_WAIT_H = "1"
	HAVE_LOCKF = "1"
	HAVE_LOG1P = "1"
	HAVE_LOG2 = "1"
	HAVE_LONG_DOUBLE = "1"
	HAVE_LSTAT = "1"
	HAVE_LUTIMES = "1"
	HAVE_MADVISE = "1"
	HAVE_MAKEDEV = "1"
	HAVE_MBRTOWC = "1"
	HAVE_MEMFD_CREATE = "1"
	HAVE_MEMORY_H = "0"
	HAVE_MEMRCHR = "1"
	HAVE_MKDIRAT = "1"
	HAVE_MKFIFO = "1"
	HAVE_MKFIFOAT = "1"
	HAVE_MKNOD = "1"
	HAVE_MKNODAT = "1"
	HAVE_MKTIME = "1"
	HAVE_MMAP = "1"
	HAVE_MREMAP = "1"
	HAVE_NCURSES_H = "1"
	HAVE_NDIR_H = "0"
	HAVE_NETPACKET_PACKET_H = "1"
	HAVE_NET_IF_H = "1"
	HAVE_NICE = "1"
	HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0"
	HAVE_OPENAT = "1"
	HAVE_OPENPTY = "1"
	HAVE_PATHCONF = "1"
	HAVE_PAUSE = "1"
	HAVE_PIPE2 = "1"
	HAVE_PLOCK = "0"
	HAVE_POLL = "1"
	HAVE_POLL_H = "1"
	HAVE_POSIX_FADVISE = "1"
	HAVE_POSIX_FALLOCATE = "1"
	HAVE_POSIX_SPAWN = "1"
	HAVE_POSIX_SPAWNP = "1"
	HAVE_PREAD = "1"
	HAVE_PREADV = "1"
	HAVE_PREADV2 = "1"
	HAVE_PRLIMIT = "1"
	HAVE_PROCESS_H = "0"
	HAVE_PROTOTYPES = "1"
	HAVE_PTHREAD_CONDATTR_SETCLOCK = "1"
	HAVE_PTHREAD_DESTRUCTOR = "0"
	HAVE_PTHREAD_GETCPUCLOCKID = "1"
	HAVE_PTHREAD_H = "1"
	HAVE_PTHREAD_INIT = "0"
	HAVE_PTHREAD_KILL = "1"
	HAVE_PTHREAD_SIGMASK = "1"
	HAVE_PTY_H = "1"
	HAVE_PWRITE = "1"
	HAVE_PWRITEV = "1"
	HAVE_PWRITEV2 = "1"
	HAVE_READLINK = "1"
	HAVE_READLINKAT = "1"
	HAVE_READV = "1"
	HAVE_REALPATH = "1"
	HAVE_RENAMEAT = "1"
	HAVE_RL_APPEND_HISTORY = "1"
	HAVE_RL_CATCH_SIGNAL = "1"
	HAVE_RL_COMPLETION_APPEND_CHARACTER = "1"
	HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1"
	HAVE_RL_COMPLETION_MATCHES = "1"
	HAVE_RL_COMPLETION_SUPPRESS_APPEND = "1"
	HAVE_RL_PRE_INPUT_HOOK = "1"
	HAVE_RL_RESIZE_TERMINAL = "1"
	HAVE_ROUND = "1"
	HAVE_RTPSPAWN = "0"
	HAVE_SCHED_GET_PRIORITY_MAX = "1"
	HAVE_SCHED_H = "1"
	HAVE_SCHED_RR_GET_INTERVAL = "1"
	HAVE_SCHED_SETAFFINITY = "1"
	HAVE_SCHED_SETPARAM = "1"
	HAVE_SCHED_SETSCHEDULER = "1"
	HAVE_SEM_CLOCKWAIT = "1"
	HAVE_SEM_GETVALUE = "1"
	HAVE_SEM_OPEN = "1"
	HAVE_SEM_TIMEDWAIT = "1"
	HAVE_SEM_UNLINK = "1"
	HAVE_SENDFILE = "1"
	HAVE_SETEGID = "1"
	HAVE_SETEUID = "1"
	HAVE_SETGID = "1"
	HAVE_SETGROUPS = "1"
	HAVE_SETHOSTNAME = "1"
	HAVE_SETITIMER = "1"
	HAVE_SETLOCALE = "1"
	HAVE_SETPGID = "1"
	HAVE_SETPGRP = "1"
	HAVE_SETPRIORITY = "1"
	HAVE_SETREGID = "1"
	HAVE_SETRESGID = "1"
	HAVE_SETRESUID = "1"
	HAVE_SETREUID = "1"
	HAVE_SETSID = "1"
	HAVE_SETUID = "1"
	HAVE_SETVBUF = "1"
	HAVE_SHADOW_H = "1"
	HAVE_SHM_OPEN = "1"
	HAVE_SHM_UNLINK = "1"
	HAVE_SIGACTION = "1"
	HAVE_SIGALTSTACK = "1"
	HAVE_SIGFILLSET = "1"
	HAVE_SIGINFO_T_SI_BAND = "1"
	HAVE_SIGINTERRUPT = "1"
	HAVE_SIGNAL_H = "1"
	HAVE_SIGPENDING = "1"
	HAVE_SIGRELSE = "1"
	HAVE_SIGTIMEDWAIT = "1"
	HAVE_SIGWAIT = "1"
	HAVE_SIGWAITINFO = "1"
	HAVE_SNPRINTF = "1"
	HAVE_SOCKADDR_ALG = "1"
	HAVE_SOCKADDR_SA_LEN = "0"
	HAVE_SOCKADDR_STORAGE = "1"
	HAVE_SOCKETPAIR = "1"
	HAVE_SPAWN_H = "1"
	HAVE_SPLICE = "1"
	HAVE_SSIZE_T = "1"
	HAVE_STATVFS = "1"
	HAVE_STAT_TV_NSEC = "1"
	HAVE_STAT_TV_NSEC2 = "0"
	HAVE_STDARG_PROTOTYPES = "1"
	HAVE_STDINT_H = "1"
	HAVE_STDLIB_H = "1"
	HAVE_STD_ATOMIC = "1"
	HAVE_STRFTIME = "1"
	HAVE_STRINGS_H = "1"
	HAVE_STRING_H = "1"
	HAVE_STRLCPY = "0"
	HAVE_STROPTS_H = "0"
	HAVE_STRSIGNAL = "1"
	HAVE_STRUCT_PASSWD_PW_GECOS = "1"
	HAVE_STRUCT_PASSWD_PW_PASSWD = "1"
	HAVE_STRUCT_STAT_ST_BIRTHTIME = "0"
	HAVE_STRUCT_STAT_ST_BLKSIZE = "1"
	HAVE_STRUCT_STAT_ST_BLOCKS = "1"
	HAVE_STRUCT_STAT_ST_FLAGS = "0"
	HAVE_STRUCT_STAT_ST_GEN = "0"
	HAVE_STRUCT_STAT_ST_RDEV = "1"
	HAVE_STRUCT_TM_TM_ZONE = "1"
	HAVE_SYMLINK = "1"
	HAVE_SYMLINKAT = "1"
	HAVE_SYNC = "1"
	HAVE_SYSCONF = "1"
	HAVE_SYSEXITS_H = "1"
	HAVE_SYS_AUDIOIO_H = "0"
	HAVE_SYS_AUXV_H = "1"
	HAVE_SYS_BSDTTY_H = "0"
	HAVE_SYS_DEVPOLL_H = "0"
	HAVE_SYS_DIR_H = "0"
	HAVE_SYS_ENDIAN_H = "0"
	HAVE_SYS_EPOLL_H = "1"
	HAVE_SYS_EVENTFD_H = "1"
	HAVE_SYS_EVENT_H = "0"
	HAVE_SYS_FILE_H = "1"
	HAVE_SYS_IOCTL_H = "1"
	HAVE_SYS_KERN_CONTROL_H = "0"
	HAVE_SYS_LOADAVG_H = "0"
	HAVE_SYS_LOCK_H = "0"
	HAVE_SYS_MEMFD_H = "0"
	HAVE_SYS_MKDEV_H = "0"
	HAVE_SYS_MMAN_H = "1"
	HAVE_SYS_MODEM_H = "0"
	HAVE_SYS_NDIR_H = "0"
	HAVE_SYS_PARAM_H = "1"
	HAVE_SYS_POLL_H = "1"
	HAVE_SYS_RANDOM_H = "1"
	HAVE_SYS_RESOURCE_H = "1"
	HAVE_SYS_SELECT_H = "1"
	HAVE_SYS_SENDFILE_H = "1"
	HAVE_SYS_SOCKET_H = "1"
	HAVE_SYS_STATVFS_H = "1"
	HAVE_SYS_STAT_H = "1"
	HAVE_SYS_SYSCALL_H = "1"
	HAVE_SYS_SYSMACROS_H = "1"
	HAVE_SYS_SYS_DOMAIN_H = "0"
	HAVE_SYS_TERMIO_H = "0"
	HAVE_SYS_TIMES_H = "1"
	HAVE_SYS_TIME_H = "1"
	HAVE_SYS_TYPES_H = "1"
	HAVE_SYS_UIO_H = "1"
	HAVE_SYS_UN_H = "1"
	HAVE_SYS_UTSNAME_H = "1"
	HAVE_SYS_WAIT_H = "1"
	HAVE_SYS_XATTR_H = "1"
	HAVE_TCGETPGRP = "1"
	HAVE_TCSETPGRP = "1"
	HAVE_TEMPNAM = "1"
	HAVE_TERMIOS_H = "1"
	HAVE_TERM_H = "1"
	HAVE_TGAMMA = "1"
	HAVE_TIMEGM = "1"
	HAVE_TIMES = "1"
	HAVE_TMPFILE = "1"
	HAVE_TMPNAM = "1"
	HAVE_TMPNAM_R = "1"
	HAVE_TM_ZONE = "1"
	HAVE_TRUNCATE = "1"
	HAVE_TZNAME = "0"
	HAVE_UCS4_TCL = "0"
	HAVE_UNAME = "1"
	HAVE_UNISTD_H = "1"
	HAVE_UNLINKAT = "1"
	HAVE_USABLE_WCHAR_T = "0"
	HAVE_UTIL_H = "0"
	HAVE_UTIMENSAT = "1"
	HAVE_UTIMES = "1"
	HAVE_UTIME_H = "1"
	HAVE_UUID_CREATE = "0"
	HAVE_UUID_ENC_BE = "0"
	HAVE_UUID_GENERATE_TIME_SAFE = "1"
	HAVE_UUID_H = "0"
	HAVE_UUID_UUID_H = "1"
	HAVE_VFORK = "1"
	HAVE_WAIT3 = "1"
	HAVE_WAIT4 = "1"
	HAVE_WAITID = "1"
	HAVE_WAITPID = "1"
	HAVE_WCHAR_H = "1"
	HAVE_WCSCOLL = "1"
	HAVE_WCSFTIME = "1"
	HAVE_WCSXFRM = "1"
	HAVE_WMEMCMP = "1"
	HAVE_WORKING_TZSET = "1"
	HAVE_WRITEV = "1"
	HAVE_ZLIB_COPY = "1"
	HAVE__GETPTY = "0"
	HOST_GNU_TYPE = "x86_64-pc-linux-gnu"
	INCLDIRSTOMAKE = "/usr/include /usr/include /usr/include/python3.10 /usr/include/python3.10"
	INCLUDEDIR = "/usr/include"
	INCLUDEPY = "/usr/include/python3.10"
	INSTALL = "/usr/bin/install -c"
	INSTALL_DATA = "/usr/bin/install -c -m 644"
	INSTALL_PROGRAM = "/usr/bin/install -c"
	INSTALL_SCRIPT = "/usr/bin/install -c"
	INSTALL_SHARED = "/usr/bin/install -c -m 755"
	INSTSONAME = "libpython3.10.so.1.0"
	IO_H = "Modules/_io/_iomodule.h"
	IO_OBJS = "\"
	LDCXXSHARED = "x86_64-linux-gnu-g++ -shared -Wl,-O1 -Wl,-Bsymbolic-functions"
	LDFLAGS = "-Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	LDFLAGS_NODIST = ""
	LDLIBRARY = "libpython3.10.so"
	LDLIBRARYDIR = ""
	LDSHARED = "x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	LDVERSION = "3.10"
	LIBC = ""
	LIBDEST = "/usr/lib/python3.10"
	LIBDIR = "/usr/lib/x86_64-linux-gnu"
	LIBFFI_INCLUDEDIR = ""
	LIBM = "-lm"
	LIBOBJDIR = "Python/"
	LIBOBJS = ""
	LIBPC = "/usr/lib/x86_64-linux-gnu/pkgconfig"
	LIBPL = "/usr/lib/python3.10/config-3.10-x86_64-linux-gnu"
	LIBPYTHON = ""
	LIBRARY = "libpython3.10.a"
	LIBRARY_DEPS = "libpython3.10.a libpython3.10.so libpython3.so"
	LIBRARY_OBJS = "\"
	LIBRARY_OBJS_OMIT_FROZEN = "\"
	LIBS = "-lcrypt -ldl  -lm"
	LIBSUBDIRS = "asyncio \"
	LINKCC = "x86_64-linux-gnu-gcc"
	LINKFORSHARED = "-Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions"
	LIPO_32BIT_FLAGS = ""
	LIPO_INTEL64_FLAGS = ""
	LLVM_PROF_ERR = "no"
	LLVM_PROF_FILE = ""
	LLVM_PROF_MERGER = "true"
	LN = "ln"
	LOCALMODLIBS = "-lexpat                       -L/usr/lib -lz                       -lexpat"
	MACHDEP = "linux"
	MACHDEP_OBJS = ""
	MACHDESTLIB = "/usr/lib/x86_64-linux-gnu/python3.10"
	MACOSX_DEPLOYMENT_TARGET = ""
	MAINCC = "x86_64-linux-gnu-gcc"
	MAJOR_IN_MKDEV = "0"
	MAJOR_IN_SYSMACROS = "1"
	MAKESETUP = "../Modules/makesetup"
	MANDIR = "/usr/share/man"
	MKDIR_P = "/bin/mkdir -p"
	MODBUILT_NAMES = "array  cmath  math  _struct  _random  _elementtree  _pickle  _datetime  _bisect  _heapq  _statistics  unicodedata  fcntl  spwd  grp  select  _csv  _socket  _posixsubprocess  _md5  _sha1  _sha256  _sha512  _sha3  _blake2  syslog  binascii  zlib  posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  pyexpat  xxsubtype"
	MODDISABLED_NAMES = ""
	MODLIBS = "-lexpat                       -L/usr/lib -lz                       -lexpat"
	MODOBJS = "$(sort   Modules/arraymodule.o  Modules/cmathmodule.o Modules/_math.o  Modules/mathmodule.o Modules/_math.o  Modules/_struct.o  Modules/_randommodule.o  Modules/_elementtree.o  Modules/_pickle.o  Modules/_datetimemodule.o  Modules/_bisectmodule.o  Modules/_heapqmodule.o  Modules/_statisticsmodule.o  Modules/unicodedata.o  Modules/fcntlmodule.o  Modules/spwdmodule.o  Modules/grpmodule.o  Modules/selectmodule.o  Modules/_csv.o  Modules/socketmodule.o  Modules/_posixsubprocess.o  Modules/md5module.o  Modules/sha1module.o  Modules/sha256module.o  Modules/sha512module.o  Modules/sha3module.o  Modules/blake2module.o Modules/blake2b_impl.o Modules/blake2s_impl.o  Modules/syslogmodule.o  Modules/binascii.o  Modules/zlibmodule.o  Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o  Modules/symtablemodule.o  Modules/pyexpat.o  Modules/xxsubtype.o)"
	MODULE_OBJS = "\"
	MULTIARCH = "x86_64-linux-gnu"
	MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"x86_64-linux-gnu\""
	MVWDELCH_IS_EXPRESSION = "1"
	NO_AS_NEEDED = "-Wl,--no-as-needed"
	OBJECT_OBJS = "\"
	OPENSSL_INCLUDES = ""
	OPENSSL_LDFLAGS = ""
	OPENSSL_LIBS = "-lssl -lcrypto"
	OPENSSL_RPATH = ""
	OPT = "-DNDEBUG -g -fwrapv -O2 -Wall"
	OTHER_LIBTOOL_OPT = ""
	PACKAGE_BUGREPORT = "0"
	PACKAGE_NAME = "0"
	PACKAGE_STRING = "0"
	PACKAGE_TARNAME = "0"
	PACKAGE_URL = "0"
	PACKAGE_VERSION = "0"
	PARSER_HEADERS = "\"
	PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o"
	PEGEN_HEADERS = "\"
	PEGEN_OBJS = "\"
	PGO_PROF_GEN_FLAG = "-fprofile-generate"
	PGO_PROF_USE_FLAG = ""
	PLATLIBDIR = "lib"
	POBJS = "\"
	POSIX_SEMAPHORES_NOT_ENABLED = "0"
	PROFILE_TASK = "-m test --pgo --timeout=1200"
	PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "1"
	PTHREAD_SYSTEM_SCHED_SUPPORTED = "1"
	PURIFY = ""
	PY3LIBRARY = "libpython3.so"
	PYLONG_BITS_IN_DIGIT = "0"
	PYTHON = "python"
	PYTHONFRAMEWORK = ""
	PYTHONFRAMEWORKDIR = "no-framework"
	PYTHONFRAMEWORKINSTALLDIR = ""
	PYTHONFRAMEWORKPREFIX = ""
	PYTHONPATH = ""
	PYTHON_FOR_BUILD = "./python -E"
	PYTHON_FOR_REGEN = ""
	PYTHON_HEADERS = "\"
	PYTHON_OBJS = "\"
	PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2""
	PY_BUILTIN_MODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g       -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE_BUILTIN"
	PY_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g       -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2   "
	PY_CFLAGS_NODIST = "-std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I../Include/internal"
	PY_COERCE_C_LOCALE = "1"
	PY_CORE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g       -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPy_BUILD_CORE"
	PY_CORE_LDFLAGS = "-Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	PY_CPPFLAGS = "-IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2"
	PY_ENABLE_SHARED = "1"
	PY_FORMAT_SIZE_T = ""z""
	PY_LDFLAGS = "-Wl,-Bsymbolic-functions      -g -fwrapv -O2   "
	PY_LDFLAGS_NODIST = ""
	PY_SSL_DEFAULT_CIPHERS = "1"
	PY_SSL_DEFAULT_CIPHER_STRING = "0"
	PY_STDMODULE_CFLAGS = "-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g       -fstack-protector-strong -Wformat -Werror=format-security  -g -fwrapv -O2    -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I../Include/internal -IObjects -IInclude -IPython -I. -I../Include -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC"
	Py_DEBUG = "0"
	Py_ENABLE_SHARED = "1"
	Py_HASH_ALGORITHM = "0"
	Py_TRACE_REFS = "0"
	QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \"
	READELF = "readelf"
	RESSRCDIR = "Mac/Resources/framework"
	RETSIGTYPE = "void"
	RUNSHARED = "LD_LIBRARY_PATH=/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared"
	SCRIPTDIR = "/usr/lib"
	SETPGRP_HAVE_ARG = "0"
	SHELL = "/bin/sh"
	SHLIBS = "-lcrypt -ldl  -lm"
	SHLIB_SUFFIX = ".so"
	SHM_NEEDS_LIBRT = "0"
	SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0"
	SITEPATH = ""
	SIZEOF_DOUBLE = "8"
	SIZEOF_FLOAT = "4"
	SIZEOF_FPOS_T = "16"
	SIZEOF_INT = "4"
	SIZEOF_LONG = "8"
	SIZEOF_LONG_DOUBLE = "16"
	SIZEOF_LONG_LONG = "8"
	SIZEOF_OFF_T = "8"
	SIZEOF_PID_T = "4"
	SIZEOF_PTHREAD_KEY_T = "4"
	SIZEOF_PTHREAD_T = "8"
	SIZEOF_SHORT = "2"
	SIZEOF_SIZE_T = "8"
	SIZEOF_TIME_T = "8"
	SIZEOF_UINTPTR_T = "8"
	SIZEOF_VOID_P = "8"
	SIZEOF_WCHAR_T = "4"
	SIZEOF__BOOL = "1"
	SO = ".cpython-310-x86_64-linux-gnu.so"
	SOABI = "cpython-310-x86_64-linux-gnu"
	SRCDIRS = "Parser Objects Python Modules Modules/_io Programs"
	SRC_GDB_HOOKS = "../Tools/gdb/libpython.py"
	STATIC_LIBPYTHON = "1"
	STDC_HEADERS = "1"
	STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */"
	STRIPFLAG = "-s"
	SUBDIRS = ""
	SUBDIRSTOO = "Include Lib Misc"
	SYSLIBS = "-lm"
	SYS_SELECT_WITH_SYS_TIME = "1"
	TCLTK_INCLUDES = "-I/usr/include/tcl8.6"
	TCLTK_LIBS = "-ltk8.6 -ltkstub8.6 -ltcl8.6 -ltclstub8.6"
	TESTOPTS = ""
	TESTPATH = ""
	TESTPYTHON = "LD_LIBRARY_PATH=/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared ./python"
	TESTPYTHONOPTS = ""
	TESTRUNNER = "LD_LIBRARY_PATH=/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared ./python ../Tools/scripts/run_tests.py"
	TESTSUBDIRS = "ctypes/test \"
	TESTTIMEOUT = "1200"
	TEST_MODULES = "yes"
	THREAD_STACK_SIZE = "0"
	TIMEMODULE_LIB = "0"
	TIME_WITH_SYS_TIME = "1"
	TM_IN_SYS_TIME = "0"
	TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo"
	UNICODE_DEPS = "\"
	UNIVERSALSDK = ""
	UPDATE_FILE = "../Tools/scripts/update_file.py"
	USE_COMPUTED_GOTOS = "1"
	VERSION = "3.10"
	VPATH = ".."
	WHEEL_PKG_DIR = "/usr/share/python-wheels/"
	WINDOW_HAS_FLAGS = "1"
	WITH_DECIMAL_CONTEXTVAR = "1"
	WITH_DOC_STRINGS = "1"
	WITH_DTRACE = "1"
	WITH_DYLD = "0"
	WITH_EDITLINE = "0"
	WITH_LIBINTL = "0"
	WITH_NEXT_FRAMEWORK = "0"
	WITH_PYMALLOC = "1"
	WITH_VALGRIND = "0"
	X87_DOUBLE_ROUNDING = "0"
	XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax"
	abiflags = ""
	abs_builddir = "/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared"
	abs_srcdir = "/build/python3.10-UfU9Sd/python3.10-3.10.12/build-shared/.."
	base = "/usr"
	datarootdir = "/usr/share"
	exec_prefix = "/usr"
	installed_base = "/usr"
	installed_platbase = "/usr"
	multiarchsubdir = "/x86_64-linux-gnu"
	platbase = "/usr"
	platlibdir = "lib"
	prefix = "/usr"
	projectbase = "/usr/bin"
	py_version = "3.10.12"
	py_version_nodot = "310"
	py_version_nodot_plat = ""
	py_version_short = "3.10"
	srcdir = "/usr/lib/python3.10/config-3.10-x86_64-linux-gnu"
	userbase = "/home/k/kirtloic/.local"

Example pyproject.toml

[tool.poetry.dependencies]
scour = "^0.38.2"

Poetry Runtime Logs

- Installing scour (0.38.2): Pending...
  - Installing scour (0.38.2): Preparing...
  - Installing scour (0.38.2): Failed

  Stack trace:

  19  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:281 in _execute_operation
       279│ 
       280│             try:
     → 281│                 result = self._do_execute_operation(operation)
       282│             except EnvCommandError as e:
       283│                 if e.e.returncode == -2:

  18  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:391 in _do_execute_operation
       389│             return 0
       390│ 
     → 391│         result: int = getattr(self, f"_execute_{method}")(operation)
       392│ 
       393│         if result != 0:

  17  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:516 in _execute_install
       514│ 
       515│     def _execute_install(self, operation: Install | Update) -> int:
     → 516│         status_code = self._install(operation)
       517│ 
       518│         self._save_url_reference(operation)

  16  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:554 in _install
       552│             archive = self._download_link(operation, Link(package.source_url))
       553│         else:
     → 554│             archive = self._download(operation)
       555│ 
       556│         operation_message = self.get_operation_message(operation)

  15  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:746 in _download
       744│             self._yanked_warnings.append(message)
       745│ 
     → 746│         return self._download_link(operation, link)
       747│ 
       748│     def _download_link(self, operation: Install | Update, link: Link) -> Path:

  14  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/executor.py:781 in _download_link
       779│             self._write(operation, message)
       780│ 
     → 781│             archive = self._chef.prepare(archive, output_dir=original_archive.parent)
       782│ 
       783│         # Use the original archive to provide the correct hash.

  13  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/chef.py:123 in prepare
       121│             return self._prepare(archive, destination=destination, editable=editable)
       122│ 
     → 123│         return self._prepare_sdist(archive, destination=output_dir)
       124│ 
       125│     def _prepare(

  12  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/chef.py:194 in _prepare_sdist
       192│             destination.mkdir(parents=True, exist_ok=True)
       193│ 
     → 194│             return self._prepare(
       195│                 sdist_dir,
       196│                 destination,

  11  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/installation/chef.py:130 in _prepare
       128│         from subprocess import CalledProcessError
       129│ 
     → 130│         with ephemeral_environment(self._env.python) as venv:
       131│             env = IsolatedEnv(venv, self._pool)
       132│             builder = ProjectBuilder.from_isolated_env(

  10  /usr/lib/python3.10/contextlib.py:135 in __enter__
       133│         del self.args, self.kwds, self.func
       134│         try:
     → 135│             return next(self.gen)
       136│         except StopIteration:
       137│             raise RuntimeError("generator didn't yield") from None

   9  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/utils/env/__init__.py:49 in ephemeral_environment
        47│         # TODO: cache PEP 517 build environment corresponding to each project venv
        48│         venv_dir = Path(tmp_dir) / ".venv"
     →  49│         EnvManager.build_venv(
        50│             path=venv_dir,
        51│             executable=executable,

   8  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/poetry/utils/env/env_manager.py:679 in build_venv
       677│         args.append(str(path))
       678│ 
     → 679│         cli_result = virtualenv.cli_run(args, setup_logging=False)
       680│ 
       681│         # Exclude the venv folder from from macOS Time Machine backups

   7  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/run/__init__.py:33 in cli_run
        31│     of_session = session_via_cli(args, options, setup_logging, env)
        32│     with of_session:
     →  33│         of_session.run()
        34│     return of_session
        35│ 

   6  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/run/session.py:44 in run
        42│ 
        43│     def run(self):
     →  44│         self._create()
        45│         self._seed()
        46│         self._activate()

   5  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/run/session.py:51 in _create
        49│     def _create(self):
        50│         logging.info("create virtual environment via %s", self.creator)
     →  51│         self.creator.run()
        52│         logging.debug(_DEBUG_MARKER)
        53│         logging.debug("%s", _Debug(self.creator))

   4  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/create/creator.py:158 in run
       156│             logging.debug("delete %s", self.dest)
       157│             safe_delete(self.dest)
     → 158│         self.create()
       159│         self.set_pyenv_cfg()
       160│         if not self.no_vcs_ignore:

   3  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/create/via_global_ref/builtin/via_global_self_do.py:95 in create
        93│                     or (src.when == RefWhen.COPY and self.symlinks is False)
        94│                 ):
     →  95│                     src.run(self, self.symlinks)
        96│         finally:
        97│             if true_system_site != self.enable_system_site_package:

   2  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/create/via_global_ref/builtin/ref.py:153 in run
       151│         dest = bin_dir / self.base
       152│         method = self.method(symlinks)
     → 153│         method(self.src, dest)
       154│         if not symlinks:
       155│             make_exe(dest)

   1  ~/.local/share/pipx/venvs/poetry/lib/python3.10/site-packages/virtualenv/util/path/_sync.py:33 in symlink
        31│     ensure_safe_to_do(src, dest)
        32│     logging.debug("symlink %s", _Debug(src, dest))
     →  33│     dest.symlink_to(src, target_is_directory=src.is_dir())
        34│ 
        35│ 

  PermissionError

  [Errno 13] Permission denied: '/usr/local/bin/python3.11' -> '/tmp/tmpfs28f7jg/.venv/bin/python'

  at /usr/lib/python3.10/pathlib.py:1255 in symlink_to
      1251│         """
      1252│         Make this path a symlink pointing to the target path.
      1253│         Note the order of arguments (link, target) is the reverse of os.symlink.
      1254│         """
    → 1255│         self._accessor.symlink(target, self, target_is_directory)
      1256│ 
      1257│     def hardlink_to(self, target):
      1258│         """
      1259│         Make this path a hard link pointing to the same file as *target*.

Cannot install scour.

ElectronicRU avatar Mar 14 '24 18:03 ElectronicRU

those options are only supposed to apply to user virtual environments

dimbleby avatar Mar 14 '24 18:03 dimbleby

Those flags only apply to end-user virtual envs, to be sure. If PEP 517 isolated builds are failing, I would say that your Python is broken; other spec-compliant tools like pip will be equally unable to build Python packages from an sdist...

We can certainly work around it, but I'm not sure that we should/it makes sense to do so.

neersighted avatar Mar 15 '24 14:03 neersighted

@neersighted I don't think my Python is broken - this is inside a Docker container, and symlink between /tmp (or /home) and /usr is a cross-FS symlink, which is the reason it fails. (At least that's my understanding - the container is set up by my hosting provider, I'm not privy to its inner workings). Understood, it seems like setting VIRTUALENV_ALWAYS_COPY=true is the workaround I'm looking for here. Would probably be nice to clarify this in Poetry docs - that Poetry might create venvs that do not honor these options.

ElectronicRU avatar Mar 20 '24 10:03 ElectronicRU

Can confirm this is happening, my docker instances are starting to fail using python:3.11-slim

RUN poetry config virtualenvs.create false
RUN poetry install --no-dev

is now creating a .venv and causing issues with PATH

root@4e21b8cd6876:/app# poetry --version
Poetry (version 1.8.2)

root@4e21b8cd6876:/app# poetry config --list
cache-dir = "/root/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = false
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /root/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

root@4e21b8cd6876:/app# python --version
Python 3.11.7

pjaol avatar Apr 05 '24 20:04 pjaol

@pjaol What you are referring to is entirely separate. In addition, you should use virtual environments, even in a container, as the kilobyte cost of a symlink farm greatly improves the reliability of your container image against future refactors/enhancements you (or your teammates) might introduce.

If you'd like to discuss why this is preferred, feel free to join the Discord server. However, please refrain from replying in this issue, as whatever you're running into is:

  1. likely not a bug
  2. off-topic for this issue

Also, if you understand why you should create an environment and you still think there is a bug, I'd still suggest joining the Discord to confirm there is unexpected behavior, as environment management is very stable and has not moved significantly since 1.2.

neersighted avatar Apr 06 '24 01:04 neersighted

@neersighted if this is a different topic could you point me to the correct one? Appreciate the discord invite but bugs should be discussed on issue tickets, discord is a walled system

pjaol avatar Apr 06 '24 17:04 pjaol

It's likely not a bug, as I said. If you think it is a bug, and you have troubleshot it (and again, you should be using a venv anyway), open a new ticket.

neersighted avatar Apr 07 '24 03:04 neersighted

Closing the issue, as the discussion indicated that this is WAI.

ElectronicRU avatar Jun 16 '24 09:06 ElectronicRU

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

github-actions[bot] avatar Jul 17 '24 00:07 github-actions[bot]